Multi-category sorting misbehaves with missing categories
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 18.3k
- Forks
- 2k
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 28
Description
Originally reported in https://github.com/plotly/plotly.py/issues/1491.
There seems to a multi-category sorting bug that wasn't fixed by #3362.
CodePen: https://codepen.io/jonmmease/pen/VNeEqq?editors=1010
var fig = {
"data": [
{
"name": "Fruits",
"type": "bar",
"x": [
[
2017,
2017,
2017,
2017,
2017,
2017,
2017,
2017,
2018,
2018,
2018,
2018
],
[
4,
5,
6,
8,
9,
10,
11,
12,
1,
2,
3,
4
]
],
"y": [
57246.0,
1587.0,
63189.0,
30680.0,
26071.0,
117519.0,
27519.0,
42643.0,
8559.0,
22355.0,
59363.0,
62955.0
]
},
{
"name": "Price",
"type": "scatter",
"x": [
[
2017,
2017,
2017,
2017,
2017,
2017,
2017,
2017,
2018,
2018,
2018,
2018
],
[
4,
5,
6,
8,
9,
10,
11,
12,
1,
2,
3,
4
]
],
"y": [
0.22991999,
0.27284184,
0.18438336,
0.24866362,
0.18280848,
0.19382398,
0.17268069,
0.18802617,
0.17560463,
0.13415343,
0.14773512,
0.31319196
],
"yaxis": "y2"
}
],
"layout": {
"height": 600,
"showlegend": true,
"yaxis": {
"showgrid": true,
"title": {
"text": "Fruits volume"
}
},
"yaxis2": {
"anchor": "x",
"overlaying": "y",
"showgrid": false,
"side": "right",
"title": {
"text": "Price per unit"
}
}
}
}
Plotly.newPlot('myDiv', fig, {showSendToCloud: true});

The problem is that in the second multi-category (2018), the 4 is sorted before 1, 2, 3 even though they are specified in ascending sorted order.
As noted in https://github.com/plotly/plotly.py/issues/1491, this seems to happen for categories that are not present in the first multi-category (2017).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the behavior using the supplied CodePen example and the Plotly.newPlot configuration, focusing on multi-category axis sorting when a category appears only in the later group. Compare the displayed order with the specified ascending order; done means the second multi-category sorts 1, 2, 3, 4 while preserving the reported behavior across the example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- data-visualization
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100