14

スプライングラフでストロークの色を変更することはできましたが、シリーズをクリックして各ポイントにマウスを合わせると、シリーズを非表示にして表示するまで、ポイントと凡例の色が変更されません。

私はここにフィドルを持っています: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();
    });
});​

なぜこれが起こっているのか、またはこれを回避する方法はありますか?

4

3 に答える 3

40

簡単です。このコードを使用できます

chart.series[0].options.color = "#008800";
chart.series[0].update(chart.series[0].options);
于 2013-06-12T04:05:46.187 に答える
8

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

これは明らかに汚い解決策ですが、うまくいくようです。

于 2012-09-17T04:28:31.757 に答える
5

コンソールを見ましたか?

ReferenceError:シリーズが定義されていません
http://fiddle.jshell.net/J56hm/1/show/39
行目

次のように変更すると、問題が解決しました

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

しかし、今は逆のことが起こります。ポイントにカーソルを合わせると、再び青色になります。色属性を設定することにより、highchartsによってレンダリングされるsvgを直接操作しようとしています。これは正しい方法ではありません。highchartがレンダリングアルゴリズムに基づいてグラフを再描画し、すべての変更が失われる可能性があるためです。
それをすべて言った後、私はまだこれを行うためにハイチャートでサポートされている方法を知りません、私が何かを思いついた場合は答えを更新します

@ jsFiddle

于 2012-09-14T08:50:06.777 に答える