Подтвердить что ты не робот

Highcharts: убедитесь, что значение y-Axis 0 находится на дне диаграммы

Я выводил серию высококачественных диаграмм на странице. В некоторых случаях все данные за указанный период времени могут возвращаться с 0 значениями.

В таком случае диаграмма выглядит следующим образом: http://jsfiddle.net/charliegriefer/KM2Jx/1/

Существует только 1 метка оси Y, 0, и она находится в середине диаграммы.

Я хотел бы заставить это значение 0 для оси y быть в нижней части диаграммы, что будет соответствовать другим диаграммам на странице, которые имеют данные.

Попробовали различные свойства yAxis, такие как "min: 0", "minPadding: 0", "maxPadding: 0", "startOnTick: true".

Кажется, это должно быть довольно просто, но я в недоумении: (

Соответствующий код yAxis:

yAxis: {
    min: 0, 
    minPadding: 0, 
    startOnTick: true, 
    title: {
        text: ""
    }
},
4b9b3361

Ответ 1

Только так, я мог бы заставить его показать, что это "правильно", также предоставляя значение yAxis max. Я думаю, что это проблема HighCharts, когда вы не предоставляете элементы данных с y-значением. Он рисует лучшую диаграмму, которую он считает возможным.

Ответ 2

Я нашел другое (и очень простое) решение:

Вы можете установить свойство оси y minRange:

yAxis: {
    ...
    minRange : 0.1
}

Это делает Highcharts отображать значения yAxis min и max, когда все данные равны 0.

UPDATE:

Требуется также исправление Highcharts 4.1.9:

        plotOptions: {
            line: {
                softThreshold: false
            }
        }

обновленная js скрипка

Ответ 3

Я также разместил это на форуме HighCharts, где у меня появился ответ, который, похоже, работает. К сожалению, это будет связано с тем, что я делаю предварительную обработку данных до рендеринга диаграмм, чтобы проверить все значения данных "0"... но это сработает. Просто хочу, чтобы в HighCharts было что-то более "встроенное".

Итак, после суммирования значений "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".

Ответ 4

Вот исправление, с которым я столкнулся, не требует предварительной обработки данных и просто позволяет его делать, как раньше, перед обновлением. http://jsfiddle.net/QEK3x/

if(chart.yAxis[0].dataMax === 0)
{
   chart.yAxis[0].setExtremes(0, 5);
}

Вам нужно только проверить ось первой серии, как если бы первая не была 0, тогда проблема не возникнет. Я мог бы отправить запрос на растяжение для этого в high-chart, хотя я почему-то чувствую, что они предназначены для этой функции по какой-то причине.

Ответ 5

Так как Highcharts 5.0.1 вы также можете использовать softMax.

softMax: Number
Мягкий максимум для оси. Если максимальный размер данных серии больше этого, ось будет оставаться на этом максимуме, но если максимальный размер данных серии будет выше, ось будет гибкой, чтобы отображать все данные.

yAxis: {
    min: 0,
    softMax: 100,
    ...
}

Вот пример с диаграммой столбцов: http://jsfiddle.net/84LLsepj/

Обратите внимание, что в настоящее время в Highcharts 5.0.7 он не работает для всех типов диаграмм. Как вы можете видеть в этот другой jsfiddle, он не работает с линейной диаграммой.

Ответ 6

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

yAxis: {
   min: 0
}

Ответ 7

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

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

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