#javascript #highcharts
#javascript #highcharts
Вопрос:
Я использую модуль диаграммы x-диапазона Highcharts для отображения диапазона из нескольких значений. У меня есть пара проблем при его реализации.
- Состояния
hover
иselect
не оказывают никакого влияния на диаграмму legend
Значок не отображает цвет данных
Код ниже:
var myChart7 = Highcharts.chart('sample', {
chart: {
type: 'xrange',
},
title: null,
xAxis: {
opposite: true,
labels: {
useHTML: true,
formatter: function() {
return this.value "ms";
},
}
},
yAxis: {
title: {
text: ''
},
labels: {
enabled: true,
},
categories: [],
reversed: true
},
tooltip: {
enabled: false
},
plotOptions: {
series: {
dataLabels: {
enabled: true
},
allowPointSelect: true,
states: {
hover: {
color: '#a4edba'
},
select: {
color: '#EFFFEF',
borderColor: 'black',
dashStyle: 'dot'
}
},
pointWidth: 15,
borderRadius: 10,
dashStyle: 'Solid',
}
},
legend: {
enabled: true,
align: 'left',
},
series: [{
color: '#C4D9FF',
name: 'Sample 1',
data: [{
x: 0,
x2: 90,
y: 0,
response: '200',
color: '#C4D9FF',
borderColor: '#789CDF',
}],
},
{
color: '#FFD7C5',
name: 'Sample 2',
data: [{
x: 5,
x2: 70,
y: 1,
response: '200',
color: '#FFD7C5',
borderColor: '#F99B6F',
}],
}, {
color: '#DCFFF5',
name: 'Sample 3',
data: [{
x: 35,
x2: 70,
y: 2,
response: '400',
color: '#DCFFF5',
borderColor: '#35C097',
}],
}
],
});
<div id="sample">
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.4/highstock.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.4/modules/xrange.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highcharts/6.0.4/highcharts-more.js"></script>
Я не знаю, правильно ли я это реализую или неправильно. Пожалуйста, направьте меня. TIA.
Я работаю над версией Chrome 85 на Mac. Не тестировал его в других браузерах.
Ответ №1:
-
Эти функции не были реализованы в версии Highcharts, которую вы используете. В текущей версии все работает нормально: https://jsfiddle.net/BlackLabel/trxjw4np /
-
В типе серии x-range элемент легенды не наследует цвет из серии, но вы можете установить его программно.
Демонстрация: https://jsfiddle.net/BlackLabel/trxjw4np /
events: {
load() {
let chart = this;
chart.legend.allItems.forEach(item => {
item.legendSymbol.css({
fill: item.userOptions.color
})
})
}
}
API: https://api.highcharts.com/highcharts/chart.events.load
Комментарии:
1. Имея еще одну проблему на том же графике, первый и третий столбцы неправильно выровнены по линиям сетки (не по центру). Есть ли способ решить эту проблему? TIA
2. @AllanJebaraj я не уверен, в чем проблема и о какой демонстрации вы говорите. Не могли бы вы описать это более точно?
3. jsfiddle.net/BlackLabel/trxjw4np Ряды на графике не выровнены по вертикали с соответствующими метками оси y. Первый ряд (синий) не выровнен по вертикали с меткой «0»
4. @AllanJebaraj обратите внимание, что у вас есть 3 разных ряда, вам нужно отключить
grouping
их, чтобы они отображались так же, как точки: jsfiddle.net/BlackLabel/snuLvxcq