使用样式化HighCharts版本时更新图表颜色

时间:2017-01-18 19:45:29

标签: css highcharts

在HighCharts的v5 +下,我们可以选择使用2个版本。一个版本就像v4及以下版本一样,其中样式和图表逻辑被包裹在一起。另一个版本是v5的新版本,其中样式在CSS中处理,逻辑在javascript中处理,如前所述。我们目前正在使用" old"版。但是,现在我们需要包含一些模式填充功能(如here所示)。这迫使我们使用CSS版本。但是,这个CSS版本打破了我们为彩色主题设置图表选项的能力,正如我们一直在做的那样:

$('#plain').click(function () {
    chart.update({
        colors: ['rgb(40,97,152)', 'rgb(57,114,169)', 'rgb(65,122,177)', 'rgb(74,131,186)', 'rgb(82,139,194)', 'rgb(90,147,202)', 'rgb(99,156,211)', 'rgb(107,164,219)', 'rgb(116,173,228)', 'rgb(124,181,236)', 'rgb(133,190,245)', 'rgb(141,198,253)', 'rgb(150,207,255)', 'rgb(158,215,255)', 'rgb(167,224,255)', 'rgb(175,232,255)', 'rgb(184,241,255)', 'rgb(192,249,255)', 'rgb(201,255,255)'],
        chart: {
            inverted: false,
            polar: false
        },
        subtitle: {
            text: 'Plain'
        }
    });
});

可测试路径 - 点击" plain"底部的按钮。条形应变为蓝色。 工作(不使用CSS版本):jsFiddle

不工作(使用CSS版本):jsFiddle

在CSS版本下执行此操作的可接受方法是什么?我们目前在" old"中做了很多事情。我们在.NET中构建HighCharts javascript代码的版本,其中包含许多依赖于某些参数(文本字符串长度,图表尺寸,点值等)的样式。我担心的是,我现在不得不将大量的排列编码到CSS文件中。还应注意,我们在页面上有多个图表,并非所有图表都需要应用相同的样式。

我们对模式填充的另一个选择是使用plugin,但它在3年内没有被更新(由HighCharts dev编写,所以很好)。

2 个答案:

答案 0 :(得分:1)

样式模式中颜色数组的等价物是.highcharts-color-{n} css类与chart.colorCount属性相结合。

css:

.highcharts-color-0 {
  fill: rgb(40,97,152);
  stroke: rgb(40,97,152);
}

...

.highcharts-color-11 {
  fill: rgb(141,198,253);
  stroke: rgb(141,198,253);
 }

JS:

var chart = Highcharts.chart('container', {
  chart: {
    colorCount: 12
  },

要获得与非样式模式完全相同的效果,您需要从Highcharts css覆盖一些css规则。

.highcharts-point {
  stroke-width: 0
}

最好的选择是创建自己的css文件或覆盖默认的Highcharts css。

示例:http://jsfiddle.net/pugshon6/

如果查看模式插件源代码,有关于上次修订日期的信息 - 2016-10-05,所以插件不应该过时。

答案 1 :(得分:1)

我在新的Highcharts中遇到了相同的“功能”,我也希望在JavaScript中保持不同的风格。

因此,在深入了解Highcharts代码后,我发现它根据提供的颜色索引生成类名(默认情况下,它使用0-9颜色索引和这些索引的类)。

所以我为数据系列"colorIndex": 55指定了假颜色索引,而highcharts相应地生成了类.highcharts-data-label-color-55。 这解决了这个问题!现在JS颜色的填充属性wins超过假css类,除非你定义.highcharts-data-label-color-55: - )

E.g。我的热图数据:

"series": [
  {
    "data": [...],
    "type": "heatmap",
    "dataLabels": {
      enabled: true,
      color: '#000000'
    },
    "colorIndex": 55
  }
],

E.g。我的饼图数据:

"series": [
          {
            data: [
              {
                name: 'N 1',
                colorIndex: 55,
                y: 10
              },
              {
                name: 'N 2',
                colorIndex: 55,
                y: 20
              },
              {
                name: 'N 3',
                colorIndex: 55,
                y: 30
              },
              {
                name: 'N 4',
                colorIndex: 55,
                y: 40
              },
            ]
          }
        ],