首页 文章

更新默认颜色的Highcharts气泡图

提问于
浏览
0

Highcharts库有一个默认的颜色数组:

http://api.highcharts.com/highcharts/colors

colors: ['#7cb5ec', '#434348', '#90ed7d', '#f7a35c', '#8085e9', 
   '#f15c80', '#e4d354', '#2b908f', '#f45b5b', '#91e8e1']

在“初始化”可以设置为你想要的任何东西 .

我的问题:“初始化后”,如何更新颜色数组并“重绘”图表?

对于单个系列,我发现我可以用一些复杂的颜色更新颜色......

chart.series[0].update({
                                            color: {
                                                radialGradient: { cx: .5, cy: .6, r: .25 },                                                 
                                                stops: [
                                                       [0, '#ffffff'],
                                                       [1, '#73ff96']
                                                    ]
                                                }
                                            }, true);

但气泡图有一个“默认”边框和“填充”,我似乎无法复制 .

http://www.highcharts.com/docs/chart-design-and-style/colors

因此,基本问题可能是:泡泡图在内部使用“colors”数组构建特定系列“颜色”属性的默认填充/不透明度设置是什么?什么是“颜色”属性?

更新

澄清如下:基于@morganfree答案 . 应用于单点,系列信息正确 .

下面,//取消选择恢复为正确的颜色,但当应用于单个点时,颜色变为灰色,带有参数,而不是这个红色的“高亮”

// unselect points
            var points = chart.getSelectedPoints(); 
                    if (points.length > 0) {
                        Highcharts.each(points, function (point) {
                            point.select(false);
                            point.update({color: '#7cb5ec'}); // default color
                        });
                    }
            // select current point     
            if(idx != -1)
                {               
                chart.series[0].data[idx].select(true);
                chart.series[0].data[idx].update({color: '#f45b5b'},true); // highlight color
                }

http://fiddle.jshell.net/mshaffer/h39e2z0o/

请注意,select元素变为灰色,基于,我相信其中的默认参数

plotOptions: {
        series: {
        allowPointSelect: true
        },

为“标记”

http://api.highcharts.com/highcharts/plotOptions.series.marker

“标记”是否允许这种动态重新着色?

另请注意,如果我随机化一个元素,然后更改系列颜色,则系列中的“randomized”元素不会更改回正确的颜色 .

更新2

看来plotOptions中“bubble”和“series”的事件是冲突的吗?点击vs选择?

2 回答

  • 0

    如果你想在初始化后更改系列的颜色,那么你必须遍历系列并更新它的颜色 - 将保留颜色的默认“感觉” .

    chart.series.forEach(function (series, i) {
      series.update({
        color: colors[colors.length - i - 1]
      }, false, false);
    });
    chart.redraw();
    

    示例:http://fiddle.jshell.net/mp27yb75/2/

    特定气泡的颜色继承自系列颜色,但如果指定该点的颜色,则会再次保留默认的“感觉” .

    chart.series[0].data[0].update({
      color: '#f45b5b'
    });
    

    示例:http://fiddle.jshell.net/mp27yb75/3/

    对于气泡,填充的不透明度设置为0.5,笔触的不透明度设置为1,笔触和填充颜色相同 .

  • 1

    你可以这样做,

    chart.series[0].data[0].update({
          y: 150,
          marker: {
            fillColor: 'red',
            states: {
              hover: {
                fillColor: 'red',
                lineColor: 'red'
              }
            }
          }
        });
    

    DEMO

相关问题