2015-07-31 4 views
2

Я использовал AddPoint неоднократно на разбросе Highchart, чтобы показать некоторую эволюцию данных, используяПредотвратить Highchart перерисовывать подергивание

setinterval() 

Когда диаграмма обновляет диапазоны осей как следствие наличия новых точек данных, диаграмма иногда «подергивание», как распределение данных не длиннее хорошо сбалансировано вокруг начала координат:

http://jsfiddle.net/dhigger/qfxe87tr/

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

Есть ли способ избежать подергивания?

ответ

1

Эти «судороги» исходят из автоматического масштабирования собственной оси Highcharts. Вы можете исправить xAxis, чтобы ваш график больше не двигался. Например, мне удалось ваш JSFiddle работает путем добавления min: -15 для xAxis:

xAxis: { 
     plotLines: [{ 
      color: '#FA5858', 
      width: 1, 
      value: 0, 
      zIndex: 2 
     }], 
     minRange: 30, 
     min: -15, 
     gridLineWidth: 1 
    } 

Смотрите JSFiddle работы с не «дергается» here.

+0

Спасибо; это решение жертвует функциональностью масштабирования оси, поэтому объем данных должен быть заранее известен, если он останется видимым, и ощущение «масштабирования», когда добавляются данные с большей величиной, теряется. Но дергаться/дергаться нет. – dhigger

+0

Да, вы правы, я не знал поведения вашего кода. Если вам нужно поддерживать масштабирование оси, нам нужно найти лучшее решение. – Kabulan0lak

+0

Основываясь на ответе от @ Kabulan0lak Я нашел способ использования 'setExtremes'; Я отправил его в качестве ответа. – dhigger

1

После установки пределов осей (на каждый ответ Kabulan0lak) я обнаружил, что могу монотонно увеличивать как положительные, так и отрицательные оси, отслеживая значения данных наибольшей величины, а затем повторно устанавливать максимальные и минимальные значения пределы осей вручную, используя setExtremes (manual).

например. chart.xAxis[0].setExtremes(min_x,max_x);

Обновлено jsfiddle: http://jsfiddle.net/dhigger/qfxe87tr/3/

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