2012-09-14 32 views
9

我已經能夠更改樣條曲線圖上的描邊顏色,但點和圖例不會改變顏色,直到我隱藏並通過單擊顯示系列後,然後將鼠標移到每個點。動態更改高位圖的系列顏色

我這裏有一個小提琴:http://jsfiddle.net/J56hm/2/

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

     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]   
     }] 
    }); 

    // the button handler 
    $('#button').click(function() { 
     chart.series[0].color = "#FF0000"; 
     chart.series[0].graph.attr({ stroke: '#FF0000' }); 

     $.each(chart.series[0].data, function(i, point) { 
      point.graphic.attr({ fill: '#FF0000' }); 
     }); 
     chart.series[0].redraw(); 
     chart.redraw(); 
    }); 
});​ 

任何想法,爲什麼這種情況正在發生或解決此問題的方法?

回答

6

在highcharts論壇下面的線程將更新的答案一個解決方案:

http://highslide.com/forum/viewtopic.php?f=9&t=7075&p=33437用小提琴http://jsfiddle.net/G5Pk7/說明它。

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

    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]   
    }] 
}); 

$('#button').click(function() { 
    var series = chart.series[0]; 
    series.color = "#FF00FF"; 
    series.graph.attr({ 
     stroke: '#FF00FF' 
    }); 
    chart.legend.colorizeItem(series, series.visible); 
    $.each(series.data, function(i, point) { 
     point.graphic.attr({ 
      fill: '#FF00FF' 
     }); 
    }); 
    series.redraw(); 
}); 

這顯然是一個骯髒的解決方案,但似乎工作。

+0

爲什麼你認爲這是一個'骯髒'的解決方案?這對我很好! – user1415427

5

你甚至看過控制檯嗎?

ReferenceError: series is not defined
http://fiddle.jshell.net/J56hm/1/show/
Line 39

更改成下列解決了這個問題

$.each(chart.series[0].data, function(i, point) { 
... 
} 

但現在發生相反的情況,當你將鼠標懸停在點它去藍再次 您試圖直接操縱由渲染的SVG通過設置顏色屬性來設置高度圖。這不是正確的方法,因爲高圖可能會根據其渲染算法重新繪製圖表,並且所有更改都可能會丟失。
說了這麼多之後,我仍然不知道在highcharts做到這一點任何支持的方法,如果我拿出東西

@ jsFiddle

+0

我的錯誤與錯誤。當我發佈這個問題並且沒有看到控制檯時,我很匆忙。我的問題依然存在,儘管我可能發現了一個骯髒的工作,即使它涉及修改底層的SVG。 – Soliah

30

這很簡單,你可以使用此代碼

chart.series[0].options.color = "#008800"; 
chart.series[0].update(chart.series[0].options);