2015-08-05 2 views
3

У меня есть карта дерева highchart с 2 уровнями, которая предназначена для отображения цены на фондовом рынке, а стоимость каждой части меняется почти каждые секунды, и я хочу обновить значение каждой части, но, как я вижу в highchart, мы можем обновить график путем изменения данных и диаграммы перерисовывания, и это приведет к тому, что диаграмма вернется на первый уровень. Как обновить значение каждой части второго уровня без перерисовывания диаграммы?Как обновить карту большого дерева без перерисовывания диаграммы?

здесь ссылку jsfiddle когда нажмите на область на первом уровне перейти на второй уровень, а затем, когда нажмите кнопку Обновить и вернуться к первому уровню, но я хочу, чтобы обновить на втором уровне http://jsfiddle.net/1e6yay4t/

+1

Всегда, когда вы хотели бы точка «обновления», вам нужно отобразить части диаграммы. Это связано с необходимостью уничтожить элементы SVG и создать новый. Пожалуйста, изолируйте свой пример на jsfiddle.net, а затем мы проверим, возможна ли какая-либо оптимизация. –

ответ

4

JSFiddle бы быть лучше, поскольку мы могли бы точно понять вашу проблему. Если вы не хотите, чтобы диаграмма перерисовывалась после каждого обновления, метод Highcharts update() как булевский аргумент, который существует специально для этого. См. this documentation.

Вам может понадобиться использовать:

chart.series[0].update({...}, false); 
+0

В этом случае элементы не обновляются, поэтому вы не видите изменений в диаграммах. –

+0

@SebastianBochan Без скрипки было трудно понять, чего хочет OP. Разве вы не думаете, что он должен использовать модуль детализации вместо того, чтобы вручную определять уровни его treemap? – Kabulan0lak

2

Я немного изменил свой код, чтобы я мог видеть, что происходит. Но, чтобы оставаться на 2-м уровне при обновлении, обновите точку вместо целой серии.

$("#update-map").on('click', function() { 
    tag[3].value += 30000000; 
    var chart = $('#treemap').highcharts(); 
    chart.series[0].data[3].update(tag[3]); 
}) 

http://jsfiddle.net/1e6yay4t/1/

(это будет работать с любой точкой, я просто выбрал 3, потому что значения в этой группе ближе, так что это более очевидно, что происходит)

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