2016-04-07 1 views
-2

Я хочу центрировать значение YAxis на ноль на Highcharts. Колонка с положительными & отрицательные значения: https://drive.google.com/open?id=0B_IZwAPijvleZzBhUnVaSFhBcDQ, эти значения оси динамически загружены. С помощью jqPlot есть опция forceTickAt0 в настройках оси, которая может соответствовать моим требованиям, Я хотел бы знать, возможно ли это с помощью Highcharts, если да, как это сделать? Спасибо.Значение диаграммы центра высоких чартов в ноль на диаграмме столбца

Update: Ok, чтобы четко объяснить, на мой вопрос, я создал jsFiddle. Как видно на графике, значение максимального/минимального ряда по оси Y равно 5001/-4280, но Highcharts показывает 15000/-5000 на границе оси y, и я ожидаю, что это будет 6000/-5000, и если вы удалите первое значение 5001 из серии y, Highcharts покажет 5000/-5000 на границе оси y, что я и ожидал. Поэтому добавьте значение 5001 в ряд оси y, потому что граница оси Y станет слишком далеко.

Ключевым моментом является то, что я не хочу, чтобы значение наибольшего/наименьшего ряда по оси Y было слишком далеко от граничного значения диаграммы max/min.

Ниже приведен код, предназначенный для пояснения, данные серии здесь используют фиксированные значения, в реальной ситуации все они динамически загружаются.

$(function() { 
    $('#container').highcharts({ 
    chart: { 
     zoomType: 'xy', 
     plotBackgroundColor: '#fffdf6', 
     alignTicks: true, 
    }, 
    title: { 
     text: 'Country Illegally Building Num Average Tax', 
    }, 
    subtitle: { 
     text: '' 
    }, 
    xAxis: [{ 
     categories: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N'], 
     crosshair: true, 
     title: { 
     text: 'Country Code', 
     } 
    }], 
    yAxis: [{ // Primary yAxis 
     labels: { 
     format: '{value} ', 
     }, 
     title: { 
     text: 'Illegally Building Num', 
     }, 

    }, { // Secondary yAxis 
     min: 0, //Required to start at zero 
     title: { 
     text: 'Average Tax ($)', 
     style: { 
      color: '#666' 
     } 
     }, 
     labels: { 
     format: '{value} $', 
     style: { 
      color: '#666' 
     } 
     }, 
     opposite: true 
    }], 
    tooltip: { 
     shared: true 
    }, 
    legend: { 
     enabled: false 
    }, 
    series: [{ 
     color: 'red', 
     negativeColor: 'green', 
     name: 'Illegally Building Num', 
     type: 'column', 
     data: [5001, 369, 475, 891, 3585, 4235, -1711, -3648, -3749, -2555, -4280, -1017, 2001, -900], 
     tooltip: { 
     valueSuffix: ' ' 
     } 
    }, { 
     name: 'Average Tax', 
     type: 'line', 
     data: [140.5, 141, 139.5, 162, 151, 142, 147, 151, 154, 142, 146, 149, 153, 111.5], 
     yAxis: 1, 
     tooltip: { 
     valueSuffix: ' $' 
     } 
    }] 
    }); 
}); 
+0

1) min/max не является абсолютным. Он работает в сочетании с * tickInterval * и * minPadding */* maxPadding *. В большинстве случаев, если вы установите max как описано, вы получите «дружественный» макс. Если вы этого не сделаете, вы можете повлиять на него, установив значения tickInterval и maxPadding. – jlbriggs

+0

Максимальное/минимальное значение очень зависит от исходных данных, и трудно настроить значения tickInterval coz y-axis могут получить большую разницу (может быть, только 1000, 10000, 100 000 или 1 000 000 ... и т. Д.) –

+0

Вы пробовали настройку мин и макс? если это не работает, как вы хотите, напишите скрипку со спецификой. вы пробовали просто распечатывать данные и не беспокоиться о чем-либо другом? Похоже, что вы просите нормальное поведение по умолчанию для Highcharts - опять же, если он не работает, как вы хотите, напишите скрипт с более подробной информацией о том, что не работает по мере необходимости. – jlbriggs

ответ

1

Я не считаю, что есть forceiTickAt0, но эта функциональность может быть легко достигнуто путем установки мин/макс от оси у. Например:

yAxis: { 
      min:-20, 
      max:20, 
      title: { 
       text: 'Axis Title' 
      }, 
      labels: { 
       formatter: function() { 
        return this.value + '°'; 
       } 
      }, 
      lineWidth: 2 
     }, 

Это будет иметь центральную точку 0, и в зависимости от ваших данных вы можете динамически устанавливать максимальный быть абсолютным значением мин.

+0

См. Мой обновленный вопрос, спасибо. –