Add support for ticks.source: 'data' to category scale
See original GitHub issueExpected Behavior
I expect that using the new 2.7 feature of defining a bar chart using arrays of objects with x/y values e.g. [{x: ..., y: ...}, ...] to generate the x labels and y values on a barchart as per the docs here: http://www.chartjs.org/docs/latest/charts/bar.html
You can also specify the dataset as x/y coordinates.
data: [{x:'2016-12-25', y:20}, {x:'2016-12-26', y:10}]
Current Behavior
See interactive pen here: https://codepen.io/ortonomy/pen/NaxVeZ
Providing a data.dataset with an array of x/y objects (e.g. data: [{x: ..., y: ...}, ...]) does not render all data points. It only renders a single bar, using the first value of the data set.
The only way that I can get it to display multiple values, is by providing the labels: [...] property to the data object. And even then, the number of bars displayed is only equal to the length of labels: [...].
I may be wrong here, but from what I can tell, the reason for providing the array of x/y objects is so the data itself provides the x label.
Steps to Reproduce (for bugs)
code
data: {
// labels: ['x','x'],
datasets: [{
label: '# of Votes',
data: [{x: 'label', y: 12}, {x: 'label', y: 19}, {x: 'label', y: 3}, {x: 'label', y: 5}, {x: 'label', y: 2}, {x: 'label', y: 3}]
}]
},
link https://codepen.io/ortonomy/pen/NaxVeZ
Context
The data coming back from my API is already in an object: {x: ..., y: ...} format so you can imagine my joy at seeing this being provided as an option. Now I have to split the data to use x: ... for labels: [...], and then y: ... for data: [...].
Environment
- Chart.js version: 2.7.0
- Browser name and version: Chrome 61 Mac OS X
- Link to your project: Can’t link – is private.
Issue Analytics
- State:
- Created 6 years ago
- Comments:9 (4 by maintainers)

Top Related StackOverflow Question
+1 Also found this bug today
Yes, you still need to specify the labels. It’s at least a bit easier for you because you now only need to create the labels instead of creating the labels and transforming the data from your format to array format.
One solution to this would be to add a
ticks.source: 'data'just like @simonbrunel added in the time scale in https://github.com/chartjs/Chart.js/pull/4507. And it should default to this if the user doesn’t specify any labels.