2013-03-05 63 views
3

重現步驟。通過點擊圖例隱藏所有系列時的圖表渲染問題

  1. 我們有一個顯示4個數據系列的圖表,每個系列都有相應的圖例。
  2. 最初的圖表加載了1年的數據。
  3. 然後,我們通過點擊4個圖例刪除圖表中的所有數據系列
  4. 然後,我們更改圖表的縮放級別 - 例如,從6個月的變焦,到3個月的變焦。 (注意:我們更改縮放但不顯示任何數據序列)。
  5. 然後,我們通過點擊圖例重新啓用數據系列。
  6. 該圖表無法正確重畫。要讓圖表重繪,我們必須重新加載整個頁面。

     <script src="http://code.highcharts.com/stock/highstock.js"></script> 
         <script src="http://code.highcharts.com/stock/modules/exporting.js"></script> 
         <div id="container" style="height: 500px; min-width: 600px"> </div> 
    
         $(function() { 
          var seriesOptions = [], 
          yAxisOptions = [], 
          seriesCounter = 0, 
          names = ['MSFT', 'AAPL', 'GOOG'], 
          colors = Highcharts.getOptions().colors; 
    
        $.each(names, function(i, name) { 
         $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename='+ name.toLowerCase() +'-c.json&callback=?', function(data) { 
          seriesOptions[i] = { 
           name: name, 
           data: data 
          }; 
    
          // As we're loading the data asynchronously, we don't know what order it will arrive. So 
          // we keep a counter and create the chart when all the data is loaded. 
          seriesCounter++; 
          if (seriesCounter == names.length) { 
           createChart(); 
          } 
         }); 
        }); 
    
        // create the chart when all data is loaded 
        function createChart() { 
         chart = new Highcharts.StockChart({ 
          chart: { 
           renderTo: 'container' 
          }, 
          navigator: { 
              enabled: false 
             }, 
          legend: { 
              enabled: true 
             }, 
    
         rangeSelector: { 
          selected: 4 
         }, 
         scrollbar: { 
             enabled: false 
            }, 
         yAxis: { 
          labels: { 
           formatter: function() { 
            return (this.value > 0 ? '+' : '') + this.value + '%'; 
           } 
          }, 
          plotLines: [{ 
           value: 0, 
           width: 2, 
           color: 'silver' 
          }] 
         }, 
    
         plotOptions: { 
          series: { 
           compare: 'percent' 
          } 
         }, 
    
         tooltip: { 
          pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>', 
          valueDecimals: 2 
         }, 
         series: seriesOptions 
        }); 
    } 
    

    });

JsFiddle Example

+0

如果您將縮放級別從3個月縮放更改爲全部,它會起作用。 – 2013-03-05 11:34:32

回答

0

簡單的解決方法
一些試驗和錯誤之後,我發現如果您不禁用導航器,則不會顯示上述錯誤。 (導航默認啓用)。

註釋行,如下圖所示:

navigator: { 
    //enabled: false 
} 

的js小提琴:http://jsfiddle.net/msjaiswal/FDXBu/1/

當然這是在Highcharts一個錯誤,但我們可以用這個上面簡單的解決方法活。