我正在使用Chart.js,一切都很好,但我想用一个渐变替换当前的颜色背景(fillColor : "rgba(250,174,50,0.5)")
。我有替换渐变的解决方案,但它对我来说太困难了,以我可怜的JS知识来实现这一点。我想对了解JS的人来说很容易。
所以我的Chart.js代码:
<script>
var data = {
labels : ["02:00","04:00","06:00","08:00","10:00","12:00","14:00","16:00","18:00","20:00","22:00","00:00"],
datasets: [
{
fillColor : "rgba(250,174,50,0.5)",
strokeColor : "#ff6c23",
pointColor : "#fff",
pointStrokeColor : "#ff6c23",
pointHighlightFill: "#fff",
pointHighlightStroke: "#ff6c23",
data : [25.0,32.4,22.2,39.4,34.2,22.0,23.2,24.1,20.0,18.4,19.1,17.4]
}
]
};
var options = {
responsive: true,
datasetStrokeWidth : 3,
pointDotStrokeWidth : 4,
tooltipFillColor: "rgba(0,0,0,0.8)",
tooltipFontStyle: "bold",
tooltipTemplate: "<%if (label){%><%=label + ' hod' %>: <%}%><%= value + '°C' %>",
scaleLabel : "<%= Number(value).toFixed(0).replace('.', ',') + '°C'%>"
};
var ctx = document.getElementById("temp-chart").getContext("2d");
var myLineChart = new Chart(ctx).Line(data, options);
</script>
**和here is solution with gradient。**有人可以尝试实现这个渐变背景,而不是我目前的固体背景?谢谢帮助。
我试着实现它,但是其他函数不起作用(比如scaleLabels等)。
6条答案
按热度按时间hujrc8aj1#
你提供的链接非常清楚,你必须在数据集中的
fillColor
字段中放入一个linearGradient对象,而不是一个普通的颜色。你可以做复杂的渐变,但下面是一个简单渐变的代码(改变同一个橙子的不透明度):以及您的完整数据集:
在此JSFiddle中查看实际应用
m4pnthwp2#
注意:对于那些使用Chart.js的较新版本(v2.7.0)的人,当您将@bviale的答案复制粘贴回代码库时,请找出它不起作用;某些属性名称已更改:
您将需要更新这些属性名称才能使其正常工作。
参考:https://github.com/chartjs/Chart.js/blob/master/docs/charts/line.md#dataset-properties
uwopmtnx3#
为了在react中使用,我采用了以下方法,您需要将一个id传递给组件,然后使用该id获取元素
这只是我的第二个答案,所以如果我写错了,请原谅我
csbfibhn4#
2022年更新版本
获取上下文元素后声明梯度,即ctx
您的数据集将
lmvvr0a85#
对于任何使用Angular 和ng 2-charts的人,这里是我的解决方案。为了简洁起见,省略了图表设置。
ct3nt3jp6#
您可以使用这个npm包。
https://www.npmjs.com/package/chartjs-plugin-gradient
这使得创建渐变backgroundColor或borderColor变得非常容易。
示例: