【问题标题】:Make Highcharts border color match background color on column chart使 Highcharts 边框颜色与柱形图上的背景颜色匹配
【发布时间】:2014-04-02 22:12:02
【问题描述】:

Highcharts 接受一系列颜色用于系列​​。我正在制作一个透明填充颜色的柱形图,我希望边框颜色是相同的颜色,但不透明。我知道我可以为每个系列设置边框颜色,但我不确定我会有多少系列。有没有办法像填充颜色一样从数组中选择borderColor?

这就是我所拥有的,它有效。当我以编程方式添加系列时,这变得很困难。 http://jsfiddle.net/scHST/

$(function () {
    $('#container').highcharts({
        colors: [
           'rgba(47,126,216,.3)', 
           'rgba(13,35,58,.3)', 
           'rgba(139,188,33,.3)', 
           'rgba(145,0,0,.3)', 
           'rgba(26,173,206,.3)', 
           'rgba(73,41,112,.3)',
           'rgba(242,143,67,.3)', 
           'rgba(119,161,229,.3)', 
           'rgba(196,37,37,.3)', 
           'rgba(166,201,106,.3)'
        ],
        chart: {
            type: 'column'
        },
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },

        plotOptions: {
            series: {
                borderColor: '#303030',
                borderWidth: '2'
            }
        },

        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],
            borderColor: 'rgba(47,126,216,1)'
        }, {
            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],
            borderColor: 'rgba(13,35,58,1)'
        }, {
            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],
            borderColor: 'rgba(139,188,33,1)'        
        }]
    });
});

【问题讨论】:

  • 啊,也许你可以有一个全局颜色数组,并使用某种函数在以编程方式添加时返回基于 series.length+1 的颜色

标签: javascript highcharts


【解决方案1】:

不幸的是,我不相信 highcharts 提供了一种将背景颜色设置为数组的方法,但是根据 Rooster 的建议,您可以使用全局颜色数组和函数来访问它们,这可能不太方便正如您所希望的那样,但它至少可以带来额外的好处,即处理不透明度转换并让您只定义一次基色,例如

var cols = new function() {
    var rgbs = [ 
        "47,126,216",
        "13,35,58",
        "139,188,33"
    ];
    this.get = function(i, a) {
        a = typeof a !== 'undefined' ? a : 1;
        return "rgba(" + rgbs[i] + "," + a + ")";
    };
    this.all = function(a) {
        var result = [];
        for(var i = 0; i < rgbs.length; i++) {
            result.push(this.get(i, a));   
        }
        return result;
    };
};

然后使用:

colors: cols.all(0.3)

borderColor: cols.get(0)

等等

http://jsfiddle.net/M7Y8h/

【讨论】:

  • 谢谢,这不是我想要的答案。但是,还是很有帮助的。
猜你喜欢
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 2012-12-07
相关资源
最近更新 更多