因此,我尝试为ChartJS甜甜圈图做一个渐变填充,但这只适用于水平方向,而不是圆形。
这是我使用的代码:
var ctx = document.getElementById("chart-area").getContext("2d");
var gradient1 = ctx.createLinearGradient(0, 0, 0, 175);
gradient1.addColorStop(0.0, '#ACE1DB');
gradient1.addColorStop(1.0, '#7FBDB9');
var gradient2 = ctx.createLinearGradient(0, 0, 400, 400);
gradient2.addColorStop(0, '#B5D57B');
gradient2.addColorStop(1, '#98AF6E');
var gradient3 = ctx.createLinearGradient(0, 0, 0, 175);
gradient3.addColorStop(0, '#E36392');
gradient3.addColorStop(1, '#FE92BD');
var gradient4 = ctx.createLinearGradient(0, 0, 0, 175);
gradient4.addColorStop(1, '#FAD35E');
gradient4.addColorStop(0, '#F4AD4F');
/* ADD DATA TO THE DOUGHNUT CHART */
var doughnutData = [
{
value: 80,
color: gradient1,
highlight: "#E6E6E6",
label: "NUTRIENTS"
},
{
value: 20,
color:"#E6F1EE"
},
{
value:50,
color: gradient2,
highlight: "#E6E6E6",
label: "PROTEINE"
},
{
value: 50,
color:"#E6F1EE"
},
{
value: 75,
color: gradient3,
highlight: "#E6E6E6",
label: "FETTE"
},
{
value:25,
color:"#E6F1EE"
},
{
value: 77,
color: gradient4,
highlight: "#E6E6E6",
label: "CARBS"
}
{
value: 23,
color:"#E6F1EE"
},
];
字符串
有没有可能在半径上实现梯度,就像在这个设计中看到的那样?
的数据
谢谢你,谢谢
3条答案
按热度按时间shyt4zoc1#
ChartJS在非线性路径上绘制线性渐变时(如圆环图)不会(正确地)使用渐变填充颜色。线性渐变不会弯曲。
可能性#1 -使用径向梯度
您可以尝试使用径向渐变,看看结果是否满足您的设计需求。
可能性#2 --使用渐变笔划(DIY项目)
此外,画布的中风将曲线周围的一个圆圈。
如果你想“滚动自己的”渐变圆环图,这里有一个示例代码和一个在圆形路径上使用渐变strokeStyle的演示(参见我之前的回答:画布中的Angular 渐变):
x1c 0d1x的数据
a11xaf1n2#
是的,我这边做的是这样的。
第1步-拿上你的病历。
字符串
第2步-decompose一个const梯度和分配它。
型
第3步-推动的颜色,你想看到的梯度。
型
在这里我推了相同的颜色。
第4步-设置圆环图颜色变量为颜色数组。
型
步骤5 -将slideDoughnutChartColors* 变量分配给画布中的颜色绑定。
型
如果你按照正确的步骤,你将结束与此.
x1c 0d1x的数据
对于4种不同的颜色,您需要创建4个不同的变量。例如,像这样的东西。
型
然后做这样的事
型
会给你带来什么样的下场
的
这是我的图表数据。
型
a11xaf1n3#
2023年答案:
我知道这个问题很久以前就被问到了,并且已经得到了回答,但是我认为对于任何寻找更新答案的人来说,知道除了标准的内置线性和径向梯度之外,现在还有第三个-圆锥梯度-这正是我们正在寻找的。
这里是docs的链接。
下面是一个简单的例子,说明它是如何实现的,以实现Chartjs甜甜圈图表的效果:
字符串
上面对图表渐变的实现只是为了显示它的效果。理想情况下,渐变应该分别应用于每一段,但这需要计算每一段的起始Angular 。
希望有帮助!