2016-01-07 4 views
0

У меня есть вопрос относительно размещения тика в двух похожих диаграммах Highcharts. В первом примере я указал свойство xAxis, и во втором примере я указал значение x и y в серии. Данные точно такие же, но, как видите, тики расположены по-разному. Я попытался поиграть с tickmarkPlacement, minPadding, maxPadding, чтобы первый пример выглядел вторым, но безуспешно.Почему размещение ярлыков Highcharts отличается от двух похожих графиков?

Может ли кто-нибудь сказать мне две диаграммы, пометить местами такими разными и как я мог бы сделать первый пример похожим на второй пример?

коде и jsFiddles:

Первый пример

Код:

$('#container').highcharts(
    { 
     "series": [ 
      { 
       "name": "Series 1", 
       "data": [ 
        69.78, 
        2235.83, 
        69.78, 
        908.36, 
        69.78, 
        174.78 
       ], 
       "color": "#0084cb", 
       "opposite": false 
      } 
     ], 
     "xAxis": { 
      "categories": [ 
       "2015", 
       "2016", 
       "2017", 
       "2018", 
       "2019", 
       "2020" 
      ], 
      "tickmarkPlacement": "on" 
     } 
    } 
); 

Диаграмма:

enter image description here

http://jsfiddle.net/fw9o4fjh/5/

Второго примера

Код:

$('#container').highcharts(
    { 
     "series": [ 
      { 
       "name": "Series 1", 
       "data": [ 
        { 
         "y": 69.78, 
         "x": 2015 
        }, 
        { 
         "y": 2235.83, 
         "x": 2016 
        }, 
        { 
         "y": 69.78, 
         "x": 2017 
        }, 
        { 
         "y": 908.36, 
         "x": 2018 
        }, 
        { 
         "y": 69.78, 
         "x": 2019 
        }, 
        { 
         "y": 174.78, 
         "x": 2020 
        } 
       ], 
       "color": "#0084cb", 
       "opposite": false 
      } 
     ] 
    } 
); 

График: enter image description here

http://jsfiddle.net/y71f7hhd/4/

ответ

4

Разница - это категориальный тип оси и тип линейной оси.

Тип категорной оси резервирует четный блок пространства для каждой категории, поэтому вы видите «лишнее» пространство в начале и конце оси x.

Если вы включите crosshairs на графике, и наведите курсор на точку, вы увидите хороший пример того, как он трактует интервал оси:

Одна из вещей, которую вы можете сделать, чтобы манипулировать категориальной осью так, как вы хотите, - это u зе мин и макс, как это:

xAxis: { 
    min:0.4, 
    max:4.6, 
    ... 

Пример:

Это далеко от точной, или идеальной, но категории работают так, как они делают для логического причины, и если вы хотите, чтобы ваш график отображался как линейный пример, лучше всего использовать линейную ось - или, поскольку вы говорите о датах, используйте ось datetime.

В любом случае вы можете использовать свойства pointStart и pointInterval, чтобы избежать необходимости отправлять значение x в свои данные.

Пример:

+2

Хотя некоторые могут сказать, что ось «datetime» «сложнее» из-за того, что она каким-то образом преобразует временную метку в js time, она всегда выглядит намного чище, а HC имеет встроенные инструменты для обработки дат намного лучше, чем пользователь, пытающийся заставить даты как категории. – wergeld

+0

nice Объяснение !! +1 –

+1

@wergeld согласился. Раньше я избегал осей времени, потому что они казались сложными. Когда я зашел, я понял, что они довольно легкие, как правило, и обеспечивают гораздо лучший опыт. – jlbriggs

-1

Различные размещения клеща, потому что вы использовали 'XAxis' для первой диаграммы и «данные» для второго. Измените диаграммы, чтобы они оба использовали один и тот же метод данных, и они должны выглядеть одинаково.

+0

Я использую series.data в обоих случаях, так что я не уверен, что вы имеете в виду. Не могли бы вы обновить скрипку и показать мне, что вы имеете в виду? Благодаря! – Waterstraal

+0

На первом графике указаны категории для оси x. На втором графике вы указываете значение x в данных. Вот почему highcharts генерирует диаграммы по-разному. Вам нужно использовать тот же метод установки оси x для обеих диаграмм, если это возможно. –

Смежные вопросы