Highcharts x-range 系列:难以删除 y 轴上的数字标签
Highcharts x-range series: difficulty removing numerical labels on y-axis
这是一个给任何有 HighchartsJS 经验的人的问题
我目前在使用 Highcharts X-range 系列图表显示状态数据时遇到问题。具体来说,我的问题是我们用来表示每个单独状态的数据都相当高且不连续(768、769 和 773)。为了标记这些单独的状态,我使用了一个稀疏数组并将我的标签放在相应的索引处。
这个 jsfiddle 描述了我试图解决的问题:https://jsfiddle.net/sn4d2hvq/10/
let categoryArray = [];
categoryArray[768] = 'one';
categoryArray[769] = 'two';
categoryArray[773] = 'three';
Highcharts.chart('container', {
chart: {
type: 'xrange'
},
title: {
text: 'Example'
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: ''
},
categories: categoryArray,
},
series: [{
name: 'dataset 1',
borderColor: 'gray',
pointWidth: 20,
data: [{
x: Date.UTC(2014, 10, 21),
x2: Date.UTC(2014, 11, 2),
y: 768,
}, {
x: Date.UTC(2014, 11, 2),
x2: Date.UTC(2014, 11, 5),
y: 769
}, {
x: Date.UTC(2014, 11, 8),
x2: Date.UTC(2014, 11, 9),
y: 773
}, {
x: Date.UTC(2014, 11, 9),
x2: Date.UTC(2014, 11, 19),
y: 769
}, {
x: Date.UTC(2014, 11, 10),
x2: Date.UTC(2014, 11, 23),
y: 773
}],
dataLabels: {
enabled: true
}
}]
});
是我想排除 y 轴上的所有值(在本例中表示所有数值),这样在第一个索引之前没有从零开始的数字,也没有任何数字之间的数字标签(即 770、771,772)。这是所需视图的示例:
https://jsfiddle.net/estgbr6j/2/
let categoryArray = ['one', 'two', 'three'];
Highcharts.chart('container', {
chart: {
type: 'xrange'
},
title: {
text: 'Example'
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: ''
},
categories: categoryArray,
},
plotOptions: {
xrange: {
colorByPoint: false,
}
},
series: [{
name: 'dataset 1',
borderColor: 'gray',
pointWidth: 20,
data: [{
x: Date.UTC(2014, 10, 21),
x2: Date.UTC(2014, 11, 2),
y: 0,
}, {
x: Date.UTC(2014, 11, 2),
x2: Date.UTC(2014, 11, 5),
y: 1
}, {
x: Date.UTC(2014, 11, 8),
x2: Date.UTC(2014, 11, 9),
y: 2
}, {
x: Date.UTC(2014, 11, 9),
x2: Date.UTC(2014, 11, 19),
y: 1
}, {
x: Date.UTC(2014, 11, 10),
x2: Date.UTC(2014, 11, 23),
y: 2
}],
dataLabels: {
enabled: true
}
}]
});
我能够始终如一地实现预期结果(如第二个示例所示)的唯一方法是映射 [768, 769, 773] => [0, 1, 2] 中的值并使用密集数组来标记新映射的值。似乎不需要这种解决方法,但我还没有在 highcharts API 中找到一个选项来轻松实现我们想要的结果而无需映射值。还应该注意的是,在我们的实际数据集中,我们通常显示多个系列,每个系列用自己的颜色描绘,而不是每个类别(我已经能够实现)。我想知道哪个 API 选项或选项可用于显示我们想要的结果。非常感谢。
highcharts: 9.0.1
高图-angular:2.10.0
angular:12.0.5
节点:14.18.0
映射数据的解决方案非常好。如果你想有平均分布的点,间隔必须是规则的。
data: [{
x: Date.UTC(2014, 10, 21),
x2: Date.UTC(2014, 11, 2),
y: 0,
}, {
x: Date.UTC(2014, 11, 2),
x2: Date.UTC(2014, 11, 5),
y: 1
}, {
x: Date.UTC(2014, 11, 8),
x2: Date.UTC(2014, 11, 9),
y: 2
}, {
x: Date.UTC(2014, 11, 9),
x2: Date.UTC(2014, 11, 19),
y: 1
}, {
x: Date.UTC(2014, 11, 10),
x2: Date.UTC(2014, 11, 23),
y: 2
}]
您可以使用tickPositions
属性,但标签不会平均分配。示例:https://jsfiddle.net/BlackLabel/gbwhk5nx/
API参考:https://api.highcharts.com/highcharts/yAxis.tickPositions
mateusz.b 官方 Highcharts 论坛对此有很好的回答。他建议使用 columnrange 系列而不是 xrange 系列来呈现数据。
在此处查看 post:
https://www.highcharts.com/forum/viewtopic.php?f=9&t=47822
这是一个给任何有 HighchartsJS 经验的人的问题
我目前在使用 Highcharts X-range 系列图表显示状态数据时遇到问题。具体来说,我的问题是我们用来表示每个单独状态的数据都相当高且不连续(768、769 和 773)。为了标记这些单独的状态,我使用了一个稀疏数组并将我的标签放在相应的索引处。
这个 jsfiddle 描述了我试图解决的问题:https://jsfiddle.net/sn4d2hvq/10/
let categoryArray = [];
categoryArray[768] = 'one';
categoryArray[769] = 'two';
categoryArray[773] = 'three';
Highcharts.chart('container', {
chart: {
type: 'xrange'
},
title: {
text: 'Example'
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: ''
},
categories: categoryArray,
},
series: [{
name: 'dataset 1',
borderColor: 'gray',
pointWidth: 20,
data: [{
x: Date.UTC(2014, 10, 21),
x2: Date.UTC(2014, 11, 2),
y: 768,
}, {
x: Date.UTC(2014, 11, 2),
x2: Date.UTC(2014, 11, 5),
y: 769
}, {
x: Date.UTC(2014, 11, 8),
x2: Date.UTC(2014, 11, 9),
y: 773
}, {
x: Date.UTC(2014, 11, 9),
x2: Date.UTC(2014, 11, 19),
y: 769
}, {
x: Date.UTC(2014, 11, 10),
x2: Date.UTC(2014, 11, 23),
y: 773
}],
dataLabels: {
enabled: true
}
}]
});
是我想排除 y 轴上的所有值(在本例中表示所有数值),这样在第一个索引之前没有从零开始的数字,也没有任何数字之间的数字标签(即 770、771,772)。这是所需视图的示例: https://jsfiddle.net/estgbr6j/2/
let categoryArray = ['one', 'two', 'three'];
Highcharts.chart('container', {
chart: {
type: 'xrange'
},
title: {
text: 'Example'
},
xAxis: {
type: 'datetime'
},
yAxis: {
title: {
text: ''
},
categories: categoryArray,
},
plotOptions: {
xrange: {
colorByPoint: false,
}
},
series: [{
name: 'dataset 1',
borderColor: 'gray',
pointWidth: 20,
data: [{
x: Date.UTC(2014, 10, 21),
x2: Date.UTC(2014, 11, 2),
y: 0,
}, {
x: Date.UTC(2014, 11, 2),
x2: Date.UTC(2014, 11, 5),
y: 1
}, {
x: Date.UTC(2014, 11, 8),
x2: Date.UTC(2014, 11, 9),
y: 2
}, {
x: Date.UTC(2014, 11, 9),
x2: Date.UTC(2014, 11, 19),
y: 1
}, {
x: Date.UTC(2014, 11, 10),
x2: Date.UTC(2014, 11, 23),
y: 2
}],
dataLabels: {
enabled: true
}
}]
});
我能够始终如一地实现预期结果(如第二个示例所示)的唯一方法是映射 [768, 769, 773] => [0, 1, 2] 中的值并使用密集数组来标记新映射的值。似乎不需要这种解决方法,但我还没有在 highcharts API 中找到一个选项来轻松实现我们想要的结果而无需映射值。还应该注意的是,在我们的实际数据集中,我们通常显示多个系列,每个系列用自己的颜色描绘,而不是每个类别(我已经能够实现)。我想知道哪个 API 选项或选项可用于显示我们想要的结果。非常感谢。
highcharts: 9.0.1 高图-angular:2.10.0 angular:12.0.5 节点:14.18.0
映射数据的解决方案非常好。如果你想有平均分布的点,间隔必须是规则的。
data: [{
x: Date.UTC(2014, 10, 21),
x2: Date.UTC(2014, 11, 2),
y: 0,
}, {
x: Date.UTC(2014, 11, 2),
x2: Date.UTC(2014, 11, 5),
y: 1
}, {
x: Date.UTC(2014, 11, 8),
x2: Date.UTC(2014, 11, 9),
y: 2
}, {
x: Date.UTC(2014, 11, 9),
x2: Date.UTC(2014, 11, 19),
y: 1
}, {
x: Date.UTC(2014, 11, 10),
x2: Date.UTC(2014, 11, 23),
y: 2
}]
您可以使用tickPositions
属性,但标签不会平均分配。示例:https://jsfiddle.net/BlackLabel/gbwhk5nx/
API参考:https://api.highcharts.com/highcharts/yAxis.tickPositions
mateusz.b 官方 Highcharts 论坛对此有很好的回答。他建议使用 columnrange 系列而不是 xrange 系列来呈现数据。
在此处查看 post: https://www.highcharts.com/forum/viewtopic.php?f=9&t=47822