2016-12-07 1 views
0

Можно ли перерисовать диаграмму после изменения параметров?Highcharts: изменить график после смены параметров

let options = { 
      chart  : { 
       renderTo: 'container', 
       type : 'line' 
      }, 
      rangeSelector: { 
       selected: 1 
      }, 

      yAxis: { 
       title: { 
        text: 'Number of downloads' 
       } 
      }, 

      xAxis: { 
       type: 'datetime' 
      }, 

      title: { 
       text: 'Title' 
      }, 


      series: undefined, 

      plotOptions: { 
       series: { 
        compare  : undefined, 
        showInNavigator: true 
       } 
      }, 


     }; 

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

// Data needs some preparation so I inject it separately, here: 
options.series = seriesOptions(preparedData) 

// This correctly plots the chart 
let chart = new Highcharts.stockChart(options) 

Затем я использую JQuery, чтобы изменить некоторые опции значения:

$('#setWeekly').on('click', function(e) { 
      options.plotOptions.series.dataGrouping = { 
       forced: true, 
       units : [ 
        [ 'week', [ 1 ] ] 
       ] 
      } 
      options.title.text = "New title" 
      chart.isDirty = true 
      chart.redraw() 
     }); 

Это ничего не делает. Когда я заменю перерисовку диаграммы на «новый Highcharts.stockChart (параметры)», она будет работать и правильно воссоздать диаграмму с правильными параметрами. Но я не думаю, что это правильный способ, в частности, потому что все параметры сбрасываются, что особенно раздражает, когда впоследствии были добавлены ряды данных.

Итак, как правильно вызвать redraw(), чтобы обновить график новыми значениями параметров?

+1

взгляните на 'chart.update' (http://api.highcharts.com/highcharts/Chart.update). – wergeld

+0

вы можете создать скрипку? –

ответ

1

Так кажется, что есть 2 способа обновления, что вы видите на экране:

простое обновление диаграммы, которые обновляют картографическая информация, такие как:

chart.update(
       { 
        title: { 
         text: 'new text' 
        } 
       } 
      ) 

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

let seriesMonth = { 
       dataGrouping: { 
        forced: true, 
        units : [ [ 'month', [ 1 ] ] ] 
       } 
      } 

chart.series[ 0 ].update(seriesMonth); 

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

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

  • Нет связанных вопросов^_^