Inference Logoinference.sh

Chart

Render simple bar, line, and area charts from tabular data.

Preview

code
1     2    3    45   Jan Feb Mar

Usage

go
1node := models.WidgetNode{2    Type:   models.WidgetNodeTypeChart,3    Height: 240,4    Data: []map[string]interface{}{5        {"date": "2025-01-01", "Desktop": 100, "Mobile": 200},6        {"date": "2025-01-02", "Desktop": 200, "Mobile": 100},7        {"date": "2025-01-03", "Desktop": 150, "Mobile": 150},8    },9    Series: []models.ChartSeries{10        {Type: "bar", DataKey: "Desktop"},11        {Type: "bar", DataKey: "Mobile"},12    },13    XAxis: "date",14}

Props

NameTypeDescriptionDefault
type"chart"Node typerequired
dataarrayTabular dataset; each object is a data rowrequired
seriesChartSeries[]Series definitions for renderingrequired
xAxisstring | objectX-axis configuration or data keyrequired
heightnumber | stringChart height-
widthnumber | stringChart width-
showYAxisbooleanShow left y-axis with labelsfalse
showLegendbooleanDisplay legendtrue
showTooltipbooleanShow tooltip on hovertrue
barGapnumberGap in px between bars in same category-
barCategoryGapstringGap between bar categories-

ChartSeries Types

BarSeries:

go
1{Type: "bar", DataKey: "Desktop", Label: "Desktop Users", Color: "blue"}

LineSeries:

go
1{Type: "line", DataKey: "Revenue", CurveType: "natural"}

AreaSeries:

go
1{Type: "area", DataKey: "Users", CurveType: "monotone", Stack: "total"}

Series Props

NameTypeDescription
type"bar" | "line" | "area"Series type
dataKeystringKey in data rows for values
labelstringLegend/tooltip label
colorstringColor token or CSS color
curveTypestringCurve interpolation (line/area)
stackstringStack group ID (bar/area)

Color Tokens

blue, purple, orange, green, red, yellow, pink

Curve Types

linear, natural, monotone, step, stepBefore, stepAfter, basis, bump

Examples

Bar Chart

go
1{2    Type:   models.WidgetNodeTypeChart,3    Height: 200,4    Data: []map[string]interface{}{5        {"month": "Jan", "sales": 400},6        {"month": "Feb", "sales": 300},7        {"month": "Mar", "sales": 500},8    },9    Series: []models.ChartSeries{10        {Type: "bar", DataKey: "sales", Color: "blue"},11    },12    XAxis: "month",13}

Line Chart

go
1{2    Type:   models.WidgetNodeTypeChart,3    Height: 200,4    Data: []map[string]interface{}{5        {"date": "2025-01-01", "users": 100},6        {"date": "2025-01-02", "users": 150},7        {"date": "2025-01-03", "users": 120},8    },9    Series: []models.ChartSeries{10        {Type: "line", DataKey: "users", CurveType: "natural"},11    },12    XAxis:     "date",13    ShowYAxis: true,14}

Stacked Area Chart

go
1{2    Type:   models.WidgetNodeTypeChart,3    Height: 240,4    Data: data,5    Series: []models.ChartSeries{6        {Type: "area", DataKey: "Desktop", Stack: "total", Color: "blue"},7        {Type: "area", DataKey: "Mobile", Stack: "total", Color: "green"},8    },9    XAxis: "date",10}

Multi-series Comparison

go
1{2    Type:   models.WidgetNodeTypeChart,3    Height: 300,4    Data: monthlyData,5    Series: []models.ChartSeries{6        {Type: "bar", DataKey: "lastYear", Label: "Last Year", Color: "gray"},7        {Type: "bar", DataKey: "thisYear", Label: "This Year", Color: "blue"},8    },9    XAxis:      "month",10    ShowLegend: true,11}

TypeScript

typescript
1const node: WidgetNode = {2  type: "chart",3  height: 240,4  data: [5    { date: "2025-01-01", Desktop: 100, Mobile: 200 },6    { date: "2025-01-02", Desktop: 200, Mobile: 100 },7  ],8  series: [9    { type: "bar", dataKey: "Desktop" },10    { type: "bar", dataKey: "Mobile" },11  ],12  xAxis: "date",13}

Best Practices

  1. Set explicit height - Charts need a defined height
  2. Keep data concise - 5-20 data points is ideal
  3. Use meaningful colors - Color-code related series
  4. Show legend for multi-series - Help users understand data
  5. Consider mobile - Charts may need adjusting for small screens

we use cookies

we use cookies to ensure you get the best experience on our website. for more information on how we use cookies, please see our cookie policy.

by clicking "accept", you agree to our use of cookies.
learn more.