javascript - 更改 Node js 上 ChartJS 的背景

标签 javascript node.js chart.js

我有以下简单代码在 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/

相关文章:

javascript - Chart.js 标签中的 HTML

javascript - Chart.js 没有高度响应

javascript - 单击按钮后如何更新变量

javascript - 如何在响应大小有限的情况下获取更多的 API 记录

javascript - 如何使用selenium点击由javascript生成的元素

javascript - 编译后按一定顺序连接 typescript 文件

node.js - 等到所有 promise 完成

javascript - Mongoose服务器选择错误: read ECONNRESET

javascript - 装载指示器

javascript - 如何使用csv在D3中画一条线