gpt4 book ai didi

javascript - Chart.js 阴影区域

转载 作者:行者123 更新时间:2023-11-30 07:22:14 30 4
gpt4 key购买 nike

Chart.js ( http://www.chartjs.org/docs/ ) 可以使用“fillColor”属性填充折线图下方的颜色(填充折线图本身和 x 轴之间的区域)。

我想知道的是 Chart.js 是否可以配置为创建阴影区域,如下所示:

http://peltiertech.com/Excel/pix5/HorizBands09.png

谢谢。

最佳答案

折线图的阴影区域

您可以扩展图表来执行此操作。


预览

enter image description here

enter image description here


脚本

Chart.types.Line.extend({
name: "LineAlt",
initialize: function (data) {
Chart.types.Line.prototype.initialize.apply(this, arguments);

var ranges = [
{
start: 100,
end: 75,
color: 'rgba(250,0,0,0.5)'
},
{
start: 75,
end: 50,
color: 'rgba(0,250,0,0.5)'
},
{
start: 50,
end: 25,
color: 'rgba(0,0,250,0.5)'
},
{
start: 25,
end: 0,
color: 'rgba(250,250,0,0.5)'
}
];

var scale = this.scale;
var rangesStart = scale.calculateY(ranges[0].start);
var rangesEnd = scale.calculateY(ranges[ranges.length - 1].end);
var gradient = this.chart.ctx.createLinearGradient(0, rangesStart, 0, rangesEnd);

ranges.forEach(function (range) {
gradient.addColorStop((scale.calculateY(range.start) - rangesStart) / (rangesEnd - rangesStart), range.color);
gradient.addColorStop((scale.calculateY(range.end) - rangesStart) / (rangesEnd - rangesStart), range.color);
})

this.datasets[0].fillColor = gradient;
}
});

然后

...
new Chart(ctx).LineAlt(data);

如果你想遮蔽整个背景使用

var originalDraw = scale.draw;
scale.draw = function() {
originalDraw.apply(this, arguments);

ctx.save();
ctx.fillStyle = gradient;
ctx.fillRect(scale.calculateX(0), scale.startPoint, scale.width, scale.endPoint - scale.startPoint);
ctx.restore();
}

代替 this.datasets[0].fillColor = gradient;


fiddle (线下)- http://jsfiddle.net/61vg048r/

fiddle (整个背景)- http://jsfiddle.net/u4Lk7xns/

关于javascript - Chart.js 阴影区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860311/

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