gpt4 book ai didi

javascript - 在 Node js 上更改 ChartJS 的背景

转载 作者:行者123 更新时间:2023-11-30 16:19:00 24 4
gpt4 key购买 nike

我有以下简单的代码在 node.js 上运行良好:

var express = require('express');
var Canvas = require('canvas');
var Chart = require('nchart');

var app = express();

app.get('/', function (req, res) {
var canvas = new Canvas(400, 200);
var ctx = canvas.getContext('2d');

var data = {
labels: ["January", "February", "March", "April"],
datasets: [
{
label: "My First dataset",
fillColor: "rgba(0,0,0,0)", //transparent
strokeColor: "#f15a42",
pointColor: "#f15a42",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(220,220,220,1)",
data: [5, 9, 8, 1]
}
]
};

var myChart = new Chart(ctx).Line(data, {});
res.setHeader('Content-Type', 'image/png');
canvas.pngStream().pipe(res);
});

var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;

console.log('app listening at http://%s:%s', host, port);
});

它生成以下 PNG 图像:

chart

它有一个透明的背景。在将图表添加到其中之前,我可以更改整个 Canvas 的背景(我希望它是纯白色)。它应该是 ChartJS 的一个功能,但我找不到任何东西。

如果我有一个 HTML Canvas ,我就可以做到这一点,但不确定如何继续使用 Node 。

最佳答案

只需扩展 Chart.js 即可,就像这样

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

var ctx = this.chart.ctx;
ctx.globalCompositeOperation = 'destination-over';
ctx.fillStyle = 'rgba(0,0,255,0.2)';
ctx.fillRect(0, 0, this.chart.width, this.chart.height);
ctx.globalCompositeOperation = 'source-over';
}
});

然后

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

fiddle - http://jsfiddle.net/q7v5qzzg/

关于javascript - 在 Node js 上更改 ChartJS 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35032762/

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