我发现了关于chart.js,我正在寻找使用一个甜甜圈图为我的网站,我发现了一个例子,我可以采取的基本知识:https://jsfiddle.net/9wp4f693/2/
我只找到了这样的东西,但它是在片段内绘制文本,而不是添加图片。
function drawSegmentValues()
{
for(var i=0; i<myDoughnutChart.segments.length; i++)
{
ctx.fillStyle="white";
var textSize = myChart.width/10;
ctx.font= textSize+"px Verdana";
// Get needed variables
var value = myDoughnutChart.segments[i].value;
var startAngle = myDoughnutChart.segments[i].startAngle;
var endAngle = myDoughnutChart.segments[i].endAngle;
var middleAngle = startAngle + ((endAngle - startAngle)/2);
// Compute text location
var posX = (radius/2) * Math.cos(middleAngle) + midX;
var posY = (radius/2) * Math.sin(middleAngle) + midY;
// Text offside by middle
var w_offset = ctx.measureText(value).width/2;
var h_offset = textSize/4;
ctx.fillText(value, posX - w_offset, posY + h_offset);
}
}
但我希望在我的片段中有图片,类似这样的东西,但我不知道我将如何做到这一点:
2条答案
按热度按时间ehxuflar1#
没有用于在圆环图中绘制图像的本机ChartJS API。
但您可以在绘制图表后手动添加图像。
对于圆环中的每个楔形块:
1.向内平移到甜甜圈的中间。
1.旋转到目标圆环楔形块的中间Angular
1.向外平移到目标圆环楔体的中点:
1.以图像宽度和高度的一半偏移量绘制图像:
1.通过将变换矩阵重置为默认值来清除变换:
w41d8nur2#
在新版本中,使用以下示例(它需要
chartjs-plugin-labels
):