2015-04-02 3 views
0

Я пытаюсь настроить столбец с переменной шириной столбца. Наличие разных ширины столбцов в одной серии не представляется возможным, поэтому я установил несколько рядов для каждой требуемой ширины и связал их.Highcharts: неправильное размещение столбцов со связанными рядами?

Но я столкнулся с проблемой, показано в следующем:

http://jsfiddle.net/drmrbrewer/215tnLna/15/

Я настроил данные так, что не должно быть никаких пробелов ... и все же есть пробелы в вышеупомянутом jsfiddle. Наведите указатель мыши на каждый столбец, чтобы увидеть время для этого столбца ... правый край столбца должен быть помещен в это время на ось x (поскольку для параметра pointPlacement установлено значение -0,5).

НО, но единственная колонковая серия, которая правильно выровнена с правым краем в указанное время, является окончательной (с интервалом 6 часов). Первые два смещены влево.

Что я делаю неправильно? Почему это происходит, и как мне настроить это так, чтобы все столбцы в связанной серии отображались в правильном положении?

Спасибо.

jsfiddle код:

$(function() { 
$('#container').highcharts({ 

    title: { 
     text: 'Variable width columns' 
    }, 
    xAxis: { 
     type: 'datetime', 
     tickInterval: 36e5, 
     labels: { 
      format: '{value:%H}' 
     } 
    }, 
    legend: { 
     enabled: false 
    }, 
    plotOptions: { 
     column: { 
      groupPadding: 0, 
      pointPadding: 0, 
      borderWidth: 0, 
      grouping: false, 
      pointPlacement: -0.5 
     } 
    }, 
    series: [{ 
     name: '1hr span', 
     type: 'column', 
     data: [{"x":1428048000000,"y":8.4},{"x":1428051600000,"y":9},{"x":1428055200000,"y":8.1},{"x":1428058800000,"y":6.6},{"x":1428062400000,"y":5}], 
     color: '#22CC00', 
     pointRange: 36e5 
    },{ 
     name: '3hr span', 
     type: 'column', 
     data: [{"x":1428073200000,"y":4.9},{"x":1428084000000,"y":4},{"x":1428094800000,"y":3.4},{"x":1428105600000,"y":2.4}], 
     color: '#22CC00', 
     linkedTo: ':previous', 
     pointRange: 3 * 36e5 
    },{ 
     name: '6hr span', 
     type: 'column', 
     data: [{"x":1428127200000,"y":6.9}], 
     color: '#22CC00', 
     linkedTo: ':previous', 
     pointRange: 6 * 36e5 
    }] 
}); 
}); 

ответ

1

Я думаю, вам нужно установить pointPlacement значения по диапазону вы хотите достичь, в вашем случае: http://jsfiddle.net/215tnLna/21/

Так что, если высокий пролет будет иметь pointPlacement: x, то ряд с более низкое значение для pointRange должно также уменьшиться pointPlacement. В вашем случае:

series: [{ 
     name: '1hr span', 
     type: 'column', 
     data: [{ 
      "x": 1428048000000, 
      "y": 8.4 
     }, { 
      "x": 1428051600000, 
      "y": 9 
     }, { 
      "x": 1428055200000, 
      "y": 8.1 
     }, { 
      "x": 1428058800000, 
      "y": 6.6 
     }, { 
      "x": 1428062400000, 
      "y": 5 
     }], 
     color: '#22CC00', 
     pointPlacement: -0.5/6, 
     pointRange: 36e5 
    }, { 
     name: '3hr span', 
     type: 'column', 
     data: [{ 
      "x": 1428073200000, 
      "y": 4.9 
     }, { 
      "x": 1428084000000, 
      "y": 4 
     }, { 
      "x": 1428094800000, 
      "y": 3.4 
     }, { 
      "x": 1428105600000, 
      "y": 2.4 
     }], 
     color: '#22CC00', 
     linkedTo: ':previous', 
     pointRange: 3 * 36e5, 
     pointPlacement: -0.5/2 
    }, { 
     name: '6hr span', 
     type: 'column', 
     data: [{ 
      "x": 1428127200000, 
      "y": 6.9 
     }], 
     color: '#22CC00', 
     linkedTo: ':previous', 
     pointRange: 6 * 36e5, 
     pointPlacement: -0.5 
    }] 
+0

Почти методом проб и ошибок, я пришел к такому же решению - см http://jsfiddle.net/drmrbrewer/215tnLna/19/ - в этом jsfiddle я включил " работая ", чтобы показать, как я вычислил' pointPlacement' для каждой серии на основе 'pointRange' этой и более высокой серий. Но это беспокоило меня, что был огромный разрыв, поэтому я пошел дальше и попытался выработать систематический способ его устранения ... это лучший способ сделать это - см. Использование 'min' и' max' в http://jsfiddle.net/drmrbrewer/215tnLna/23/. – drmrbrewer

+0

Но я должен добавить, что в моем «реальном мире» код, я обнаружил, что самые левые столбцы (один или два) скрыты по какой-то причине при использовании 'min' и' max', как указано выше, чтобы устранить пробел. Для столбцов есть место, но они скрыты. Но мне нужно определить, является ли это что-то еще в моих настройках, которое их скрывает, потому что в jsfiddle выше ни один столбец не скрыт. – drmrbrewer

+0

Трудно сказать, где проблема. Может быть, старая версия Highcharts? –

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