Dataset data should be an object, not an array to ensure alignment with the labels
See original GitHub issueFeature Proposal
We should be able to specify the data in a dataset as an object that has the values keyed against the labels of the chart.
Feature Use Case
The current implementation works like this:
chart.data.labels = ["A","B","C"];
chart.data.datasets = [{data: [10,0,3]}];
This means you have to make sure that your dataset data array must be zero filled and populated in the same order as the label array. This adds unnecessary complexity to the code that builds the chart data object.
I have run into an issue creating a multiple series from an odata source. In odata, there is no guaranty that you get a data point if the value is zero, which results in this:
chart.data.labels = ["A","B","C"];
chart.data.datasets = [{data: [10,3]}];
This obviously results in an invalid chart, as A is supposed to be 10, B is supposed to be 0 and C is supposed to be 3.
Imagine if the dataset could be specified as an object instead of an array. This would make dataset building MUCH easier and less error prone.
chart.data.labels = ["A","B","C"];
chart.data.datasets = [{data: "A":10,"C":5}]
Possible Implementation
The chart.js library could maintain backward compatibility by detecting whether the dataset data property is an object or an array.
Issue Analytics
- State:
- Created 5 years ago
- Comments:10 (5 by maintainers)
Top GitHub Comments
{data: "A":10,"C":5}
is not valid js.Added support for you second example in #6106. Shown there: CodePen It would need support from maintainers / other contributors to make it. I think we all agree to the idea of parsing once and using parsed data everywhere, but the implementation is all my doing and has not been discussed much.
@kurkle, can this be amended to work for line charts as well?
I ran into an issue trying to plot a forecast line. In this case I have 12 Months on the X axis and I want to plot a line that goes from today forward only. With the current behavior, it starts at the beginning of the X axis and stops when it runs out of points.