# Charts
The mx-chart component provides chart generation via Chart.js (opens new window).
The type, data, and options are all passed via three props of the same name.
By default, the charts are sized to the container width, and the chart's height is determined by its
aspect ratio. The width and height props may be used to set an explicit size in pixels. Be sure to
set the maintainAspectRatio option to false if necessary when setting an explicit height.
# Line charts
Sparkline
<mx-chart ref="lineChart" type="line" :data.prop="lineData" /> <mx-chart width="128" height="48" type="line" :data.prop="lineData" :options.prop="sparklineOptions" /> lineData: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
datasets: [
{
label: 'Example data',
data: [435, 321, 532, 801, 1231, 1098, 732, 321, 451, 482, 513, 397],
borderColor: '#d93b65'
},
]
}, 1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
sparklineOptions: {
maintainAspectRatio: false,
elements: {
point: {
radius: 0
},
},
scales: {
x: {
display: false,
},
y: {
display: false
}
},
plugins: {
legend: false,
title: false,
tooltip: false
},
}, 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Bar charts
<mx-chart type="bar" :data.prop="barData" /> barData: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
datasets: [
{
label: 'Example data',
data: [65, 59, 80, 81, 56, 55, 40],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(255, 159, 64, 0.2)',
'rgba(255, 205, 86, 0.2)',
'rgba(75, 192, 192, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(153, 102, 255, 0.2)',
'rgba(201, 203, 207, 0.2)'
],
},
]
}, 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Pie and doughnut charts
<mx-chart width="320" type="pie" :data.prop="pieData" />
<mx-chart width="320" type="doughnut" :data.prop="pieData" /> 1
pieData: {
labels: [
'Red',
'Blue',
'Yellow'
],
datasets: [{
label: 'Example data',
data: [300, 50, 100],
backgroundColor: [
'rgb(255, 99, 132)',
'rgb(54, 162, 235)',
'rgb(255, 205, 86)'
],
}]
}, 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Mixed charts
It is possible to combine chart types. Instead of setting the type prop, set the type within each
dataset individually.
<mx-chart :data.prop="mixedData" /> mixedData: {
labels: ['January', 'Febrary', 'March', 'April'],
datasets: [{
type: 'line',
label: 'Line data',
data: [10, 15, 55, 40],
}, {
type: 'bar',
label: 'Bar data',
data: [10, 30, 60, 40],
backgroundColor: [
'rgba(255, 99, 132, 0.2)',
'rgba(54, 162, 235, 0.2)',
'rgba(255, 205, 86, 0.2)',
'rgba(20, 205, 86, 0.2)',
]
}]
} 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# mx-chart
# Properties
| Property | Attribute | Description | Type | Default |
|---|---|---|---|---|
data | -- | The labels and datasets to render. See the Chart.js documentation (opens new window). | ChartData<keyof ChartTypeRegistry, (number \| ScatterDataPoint \| BubbleDataPoint)[], unknown> | undefined |
elAriaLabel | el-aria-label | The aria-label attribute for the inner canvas element. | string | 'Chart' |
height | height | Explicit height in pixels | number | undefined |
options | -- | See the Chart.js documentation (opens new window). | { datasets?: _DeepPartialObject<{ line: LineControllerDatasetOptions & FillerControllerDatasetOptions; bar: BarControllerDatasetOptions; scatter: LineControllerDatasetOptions; bubble: BubbleControllerDatasetOptions; pie: DoughnutControllerDatasetOptions; doughnut: DoughnutControllerDatasetOptions; polarArea: PolarAreaControllerDatasetOptions; radar: RadarControllerDatasetOptions & FillerControllerDatasetOptions; }>; indexAxis?: "x" \| "y"; clip?: number \| false \| _DeepPartialObject<ChartArea>; color?: string \| _DeepPartialObject<CanvasGradient> \| _DeepPartialObject<CanvasPattern> \| ((ctx: ScriptableContext<keyof ChartTypeRegistry>, options: AnyObject) => Color); backgroundColor?: string \| _DeepPartialObject<CanvasGradient> \| _DeepPartialObject<CanvasPattern> \| ((ctx: ScriptableContext<keyof ChartTypeRegistry>, options: AnyObject) => Color); borderColor?: string \| _DeepPartialObject<CanvasGradient> \| _DeepPartialObject<CanvasPattern> \| ((ctx: ScriptableContext<keyof ChartTypeRegistry>, options: AnyObject) => Color); font?: _DeepPartialObject<Partial<FontSpec>>; responsive?: boolean; maintainAspectRatio?: boolean; resizeDelay?: number; aspectRatio?: number; locale?: string; onResize?: (chart: Chart<keyof ChartTypeRegistry, (number \| ScatterDataPoint \| BubbleDataPoint)[], unknown>, size: { width: number; height: number; }) => void; devicePixelRatio?: number; interaction?: _DeepPartialObject<CoreInteractionOptions>; hover?: _DeepPartialObject<CoreInteractionOptions>; events?: _DeepPartialArray<keyof HTMLElementEventMap>; onHover?: (event: ChartEvent, elements: ActiveElement[], chart: Chart<keyof ChartTypeRegistry, (number \| ScatterDataPoint \| BubbleDataPoint)[], unknown>) => void; onClick?: (event: ChartEvent, elements: ActiveElement[], chart: Chart<keyof ChartTypeRegistry, (number \| ScatterDataPoint \| BubbleDataPoint)[], unknown>) => void; layout?: _DeepPartialObject<Partial<{ autoPadding: boolean; padding: Scriptable<number \| Partial<ChartArea>, ScriptableContext<keyof ChartTypeRegistry>>; }>>; parsing?: false \| _DeepPartialObject<{ [key: string]: string; }>; normalized?: boolean; animation?: false \| _DeepPartialObject<AnimationSpec<keyof ChartTypeRegistry> & { onProgress?: (this: Chart<keyof ChartTypeRegistry, (number \| ScatterDataPoint \| BubbleDataPoint)[], unknown>, event: AnimationEvent) => void; onComplete?: (this: Chart<keyof ChartTypeRegistry, (number \| ScatterDataPoint \| BubbleDataPoint)[], unknown>, event: AnimationEvent) => void; }>; animations?: _DeepPartialObject<AnimationsSpec<keyof ChartTypeRegistry>>; transitions?: _DeepPartialObject<TransitionsSpec<keyof ChartTypeRegistry>>; elements?: _DeepPartialObject<ElementOptionsByType<keyof ChartTypeRegistry>>; plugins?: _DeepPartialObject<PluginOptionsByType<keyof ChartTypeRegistry>>; line?: _DeepPartialObject<{ datasets: LineControllerDatasetOptions & FillerControllerDatasetOptions; }>; bar?: _DeepPartialObject<{ datasets: BarControllerDatasetOptions; }>; scatter?: _DeepPartialObject<{ datasets: LineControllerDatasetOptions; }>; bubble?: _DeepPartialObject<{ datasets: BubbleControllerDatasetOptions; }>; pie?: _DeepPartialObject<{ datasets: DoughnutControllerDatasetOptions; }>; doughnut?: _DeepPartialObject<{ datasets: DoughnutControllerDatasetOptions; }>; polarArea?: _DeepPartialObject<{ datasets: PolarAreaControllerDatasetOptions; }>; radar?: _DeepPartialObject<{ datasets: RadarControllerDatasetOptions & FillerControllerDatasetOptions; }>; scales?: _DeepPartialObject<{ [key: string]: ScaleOptionsByType<"radialLinear" \| keyof CartesianScaleTypeRegistry>; }>; } | undefined |
type | type | The type of chart to render. For mixed charts, set the type in the dataset instead. | "bar" \| "bubble" \| "doughnut" \| "line" \| "pie" \| "polarArea" \| "radar" \| "scatter" | undefined |
width | width | Explicit width in pixels | number | undefined |
# Methods
# update() => Promise<void>
Force the chart to rerender.
# Returns
Type: Promise<void>
If you are having trouble setting a prop or adding an event listener, refer to this page.