Highcharts: убедитесь, что значение оси y 0 находится в нижней части диаграммы
Я вывожу серию хайчартов на странице. В некоторых случаях все данные за указанный период времени могут возвращаться со значениями 0.
В таком случае диаграмма выглядит следующим образом: http://jsfiddle.net/charliegriefer/KM2Jx/1/
Существует только 1 метка оси y, 0, и она находится в середине диаграммы.
Я хотел бы заставить это значение 0 для оси y находиться в нижней части диаграммы, что было бы совместимо с другими диаграммами на странице, которые имеют данные.
Пробовали различные свойства yAxis, такие как" min: 0"," minPadding: 0"," maxPadding: 0","startOnTick: true".
Кажется, это должно быть довольно просто, но я в недоумении : (
Соответствующий код яксиса:
yAxis: {
min: 0,
minPadding: 0,
startOnTick: true,
title: {
text: ""
}
},
8 ответов:
Единственный способ, которым я мог заставить его показать это "правильно", был также предоставлением значения yAxis
max. Я думаю, что это проблема HighCharts, когда вы не предоставляете элементы данных с y-значением. Он рисует самую лучшую диаграмму, на которую только способен.
Я нашел другое (и очень простое) решение:
Можно задать свойство y-axis
minRange:yAxis: { ... minRange : 0.1 }Это заставляет Highcharts отображать значения yaxis min и max, когда все данные равны 0.
Обновление:
Highcharts 4.1.9 fix также необходимо:
plotOptions: { line: { softThreshold: false } }
Я также опубликовал это на форуме HighCharts, где получил ответ, который, кажется, работает. К сожалению, это потребует от меня некоторой предварительной обработки данных перед отображением диаграмм, чтобы проверить все значения данных "0"... но это сработает. Просто хотелось бы, чтобы было что-то более "встроенное" в Хайчарты.
Итак, после суммирования значений" y", если я получу 0, свойства оси y должны выглядеть следующим образом:
yAxis: { minPadding: 0, maxPadding: 0, min: 0, max:1, showLastLabel:false, tickInterval:1, title: { text: "" } }См.: http://jsfiddle.net/KM2Jx/2/
Ключи, по-видимому, являются свойствами" max "и" showLastLabel".
Вот исправление, которое я придумал, которое не требует предварительной обработки данных и просто позволяет highcharts делать это, как это было до обновления. http://jsfiddle.net/QEK3x/
if(chart.yAxis[0].dataMax === 0) { chart.yAxis[0].setExtremes(0, 5); }Вам нужно только проверить первую ось ряда, так как если первая ось не равна 0, то проблема не возникнет. Я мог бы отправить запрос на вытягивание для этого в high-charts, хотя я чувствую, что они предназначены для этой функциональности по какой-то причине.
Начиная с Highcharts 5.0.1, вы также можете использовать softMax.
SoftMax: Число
Мягкий максимум для оси. Если максимум данных серии больше этого, ось останется на этом максимуме, но если максимум данных серии выше, ось будет изгибаться, чтобы показать все данные.yAxis: { min: 0, softMax: 100, ... }Вот пример с гистограммой: http://jsfiddle.net/84LLsepj/
Обратите внимание, что в настоящее время в Highcharts 5.0.7 он, кажется, не работает для все типы диаграмм. Как вы можете видеть в этом другом jsfiddle , он не работает с линейным графиком.
Для Highcharts 5.x. x, вы должны быть в состоянии просто указать:
yAxis: { softMin: 0, softMax: 1, };Это не будет работать для линейного графика, который требует, чтобы вы также установили
minRangeв том же объекте конфигурации, что и выше. Экспериментируйте с различными значениями, так как определение, напримерminRange: 6, создало диапазон на yAxis между 0 и 4.

Comments