2013-03-05 61 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一个错误,但我们可以用这个上面简单的解决方法活。