2013-06-25 39 views
0

我試圖繪製一個系列的列類型的圖表。數據可以是正面的也可以是負面的。我嘗試通過單擊來更新大於0(或小於0)的點的顏色。用下面的例子:Highcharts:點擊更新專欄顏色---需要鼠標懸停?

var chart = new Highcharts.Chart({ 
    chart: { 
     renderTo: 'container', 
     type: 'column' 
    }, 
    xAxis: { 
     categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
    }, 

    plotOptions: { 
     series: { 
      cursor: 'pointer', 
      point: { 
       events: { 
        click: function() { 
         for (var i = 0; i < this.series.data.length; i++) { 
          if (this.y < 0) { 
           if (this.series.data[i].y < 0) 
            this.series.data[i].update({ color: '#ECB631' }, false, false); 
          }else { 
           if (this.series.data[i].y > 0) 
            this.series.data[i].update({ color: '#ECB631' }, false, false); 


          } 
         } 
        } 
       } 
      } 
     } 
    }, 

    series: [{ 
     data: [29.9, -71.5, 106.4, -129.2, 144.0, 176.0, -135.6, 148.5, -216.4, 194.1, 95.6, 54.4], 
     negativeColor: '#FF0000' 
    }] 
}); 

這裏是the linkhttp://jsfiddle.net/CkkbF/57/

我發現一些有趣和奇怪:

  1. 如果該點的數據爲正,則單擊列顏色將改變,但積極的數據等欄目有稍微不同的顏色(似乎突出顯示。)

  2. 如果點數據爲負值,則點擊的列顏色將保持不變(在我的示例中爲紅色),直到您將鼠標移出該點爲止。負數據的其他列保持不變,除非您嘗試將鼠標移入/移出它們。

可能是一個錯誤?我如何正確更新它們?

回答

1

我想你想更新系列彩色或一系列negativeColor,一起來看看:http://jsfiddle.net/CkkbF/60/

plotOptions: { 
     series: { 
      cursor: 'pointer', 
      point: { 
       events: { 
        click: function() { 
         if (this.y > 0) { 
          this.series.update({ 
           color: "#ECB631" 
          }); 
         } else { 
          this.series.update({ 
           negativeColor: "#ECB631" 
          }); 
         } 

        } 
       } 
      } 
     } 
    }, 
+0

謝謝!有用!它似乎不適用於更通用的?實際上,我有一個更復雜的情況,每個點都有一個ID,如果單擊該列,具有相同ID的所有列將更改爲特定顏色(不管它是否定的)。我放棄了negativeColor想法,而是在圖表加載時迭代地爲所有列着色。我知道這是愚蠢的,但它的工作... – Touma

+0

看起來像Highcharts有一些負面顏色的問題 –