我想改变由chart.js生成的折线图的背景颜色。似乎没有这个选项,并且文档也没有帮助。在互联网上进行了广泛搜索,但没有结果。这是否可能?
我必须承认我对HTML5画布并不是很了解,所以有些困难!
我想改变由chart.js生成的折线图的背景颜色。似乎没有这个选项,并且文档也没有帮助。在互联网上进行了广泛搜索,但没有结果。这是否可能?
我必须承认我对HTML5画布并不是很了解,所以有些困难!
使用 Chart.js 的版本 v2.1,您可以编写自己的插件来实现此功能。
预览
脚本
Chart.pluginService.register({
beforeDraw: function (chart, easing) {
if (chart.config.options.chartArea && chart.config.options.chartArea.backgroundColor) {
var helpers = Chart.helpers;
var ctx = chart.chart.ctx;
var chartArea = chart.chartArea;
ctx.save();
ctx.fillStyle = chart.config.options.chartArea.backgroundColor;
ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
ctx.restore();
}
}
});
然后
...
options: {
chartArea: {
backgroundColor: 'rgba(251, 85, 85, 0.4)'
}
}
...
JSFiddle - http://jsfiddle.net/rrcd60y0/
我不确定你所说的“未被线图占据的图表主区域的背景颜色”,但是你可以通过CSS设置画布的背景颜色:
#myChart {
background-color: #666;
}
为了帮助其他想要添加多个背景颜色的人: 我稍微修改了@potatopeelings的答案。首先,我检查了有多少列。
var columnCount = chart.data.datasets[0].data.length;
var width = chartArea.right - chartArea.left;
var columnWidth = width/columnCount;
while (startPoint < chartArea.right) {
ctx.fillRect(startPoint, chartArea.top, columnWidth, height);
startPoint += columnWidth * 2;
}
对于我的图表,这个方法效果更好,但是7月份的列只显示了部分。不知道如何修复,但希望您能从这里得到想法。