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: ""
}
},
663   8  

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
            }
        }

Обновленный JS fiddle

Я также опубликовал это на форуме 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 , он не работает с линейным графиком.

Просто добавьте опцию " min "

yAxis: {
   min: 0
}

Для Highcharts 5.x. x, вы должны быть в состоянии просто указать:

yAxis: {
  softMin: 0,
  softMax: 1,
};

Это не будет работать для линейного графика, который требует, чтобы вы также установили minRange в том же объекте конфигурации, что и выше. Экспериментируйте с различными значениями, так как определение, например minRange: 6, создало диапазон на yAxis между 0 и 4.

MinRange: 1 или то, что вы чувствуете, чтобы отображаться в долях
softMax: 100 или что вы там чувствуете

Результат

yAxis: {
         minRange : 1,
         softMax: 100
       }

Comments

    Ничего не найдено.