gpt4 book ai didi

javascript - 列 Highcharts 中的渐变

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:42:29 24 4
gpt4 key购买 nike

我正在使用 highcharts 绘制柱形图,但我想要的是颜色在所有列中都是渐变的,即每列应该有不同的颜色。

我可以在 n 列中放置 n 梯度,但不能在整个图形中放置单个跨梯度。

附上简要思路: enter image description here

最佳答案

这是一个有趣的想法,所以我试了一下。我能够使用 Highcharts 单色填充 PIE 的变体得到接近您想要的东西 demo .棘手的部分是知道你有多少数据,这样亮度计算就不会在系列结束前达到最大值。如果你知道你将拥有多少数据点,你可以预先填充原型(prototype),或者你可以使它成为一个将点数作为参数的函数。无论如何,这是我的尝试:

$(function() {
// Make monochrome colors and set them as default for all pies
Highcharts.getOptions().plotOptions.column.colors = (function() {
var colors = [],
base = '#e2535c', //Set to the starting color you want.
i;
// This is the part you need to setup.
//The "50" is just some arbitrarily large value for this demo.
for (i = 0; i < 50; i += 1) {
// Start out with a darkened base color (negative brighten), and end
// up with a much brighter color
// I modified the math here to use 25 as the increment.
// Your needs may vary.
colors.push(Highcharts.Color(base).brighten((i - 3) / 25).get());
}
return colors;
}());

var chart = new Highcharts.Chart({
chart: {
renderTo: 'container',
type: 'column'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
column: {
colorByPoint: true // This needs to be true.
}
},
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]
}]
});
});

直播demo .我很确定这可以通过另一种方式完成,但这让我完成了 90% 的事情。

在对可以在 javascript 中生成颜色渐变的方法进行更多搜索后,我遇到了 RainbowVis-JS .这使您可以设置开始和结束颜色(以及任何中间颜色)以及您需要多少停靠点。我设置了一种使用 chart.events.load 方法执行此操作的方法。我正在做的是获取我的 series.data 中有多少点并将其设置为范围。然后我遍历数据中的数据点并使用索引值返回颜色并使用 Point.update 更新点:

chart: {
renderTo: 'container',
type: 'column',
events: {
load: function() {
var rainbow = new Rainbow();
// Set start and end colors
rainbow.setSpectrum('#e2535c', '#ea9056');

// Set the min/max range
var theData = this.series[0].data;
var rangeLow = 0;
var rangeHigh = theData.length
rainbow.setNumberRange(rangeLow, rangeHigh);

// Loop over data points and update the point.color value
for (index = 0; index < theData.length; ++index) {

this.series[0].data[index].update({
color: '#' + rainbow.colourAt(index)
});
}
}
}
},

Demo .

关于javascript - 列 Highcharts 中的渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37342792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com