当点为负值时,我需要在Line Chart.js中更改填充颜色(内部区域)。
代码简单而基本:
$(document).ready(function(){
var ctx = $("#myChart").get(0).getContext("2d");
var data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My First dataset",
//fillColor : "rgba(60,91,87,1)",
// String - the color to fill the area under the line with if fill is true
backgroundColor: "rgba(75,192,192,0.4)",
strokeColor : "rgba(60,91,87,1)",
pointColor : "rgba(60,91,87,1)",
pointStrokeColor : "#58606d",
// The actual data
data: [65, 59, 80, -81, 56, 55, -40],
// String - If specified, binds the dataset to a certain y-axis. If not specified, the first y-axis is used. First id is y-axis-0
yAxisID: "y-axis-0",
}
]
};
var options = {
scales: {
yAxes: [{
display: true,
ticks: {
suggestedMin: 0, // minimum will be 0, unless there is a lower value.
// OR //
beginAtZero: true // minimum value will be 0.
}
}]
}
};
var myLineChart = new Chart(ctx, {
type: 'line',
data: data,
options: options
});
// myLineChart.data.datasets[0].metaDataset._points[3]._model.backgroundColor = "red";
// if (myLineChart.datasets[0].points[4].value < 0) {
// myLineChart.datasets[0].points[4].fillColor = "red";
// myLineChart.update();
// }
})
字符串
我试图得到这样的结果:
的数据
6条答案
按热度按时间vatpfxk51#
您可以扩展折线图来完成此操作。
预览
x1c 0d1x的数据
脚本
字符串
然后
型
小提琴-http://jsfiddle.net/g2r2q5Lu/
gcmastyq2#
要让上面的 @potatopeelings 代码使用chart.js 2.5.x,您需要将**yAxisID:'y-axis-0'**添加到数据集中,如下所示。
字符串
7cjasjjr3#
我更新了方法以处理多个数据集。
字符串
在Angular 8上的chart.js 2.8.0上测试
的数据
g9icjywg4#
这是从this post派生的。它适用于Chart.js v2.9.4,不需要任何外部代码或创建自定义图表类型。只需将此插件对象添加到您的图表选项中。(请注意,插件对象与选项对象是分开的。如果您将插件对象放在选项对象中,它将无法工作。)
字符串
显然,对于更复杂的图,您需要更新数据集索引和轴名称,但对于简单的图,就这么简单。
lc8prwob5#
如果数据集数据格式为
[1,2,3,...]
,@potatopeelings代码将正常工作如果您的数据格式为
[{x: 1 , y: 1},...]
,则需要将var min
和var max
更改为:字符串
在ChartJS 2.7.3上测试
sr4lhrrt6#
@potatopeelings如果所有数据都是负数或正数,梯度就会出错,下面是我如何修复的。(改变了梯度颜色,但修复仍然存在)
字符串