Javascript 画布饼图:存在ctx.FillText()问题,因此我的标签不会';不恰当地出现
在我的画布饼图中,我试图让我的标签显示A、B或C,主要使用以下代码片段:Javascript 画布饼图:存在ctx.FillText()问题,因此我的标签不会';不恰当地出现,javascript,canvas,Javascript,Canvas,在我的画布饼图中,我试图让我的标签显示A、B或C,主要使用以下代码片段: var PI2 = Math.PI * 2; var myColor = ["white", "white", "white"]; var myData = [30, 60, 29]; var myLabels = ["A", "B","C"] var cx = 150; var cy = 150; var radius = 80; pieChart(myData, myColor, myLabels);
var PI2 = Math.PI * 2;
var myColor = ["white", "white", "white"];
var myData = [30, 60, 29];
var myLabels = ["A", "B","C"]
var cx = 150;
var cy = 150;
var radius = 80;
pieChart(myData, myColor, myLabels);
// draw the the label at end of sector
var midAngle = endAngle ;
var labelRadius = radius * 1.5;
var x = cx + (labelRadius) * Math.cos(midAngle);
var y = cy + (labelRadius) * Math.sin(midAngle);
ctx.fillStyle = 'blue';
ctx.fillText(myLabels, x, y);
完整代码如下:
但是,每个标签都显示MyLabel中的所有三个字母。我尝试在myLabels后面添加一个[I],但结果只显示了一个扇区
如何让每个标签显示其各自的字母
谢谢 向
drawWedge
函数添加第五个参数,在for
循环中调用函数时,将myLabels[i]
作为第五个参数传递
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
ctx.lineWidth=2;
ctx.font='12px verdana';
var PI2=Math.PI*2;
var myColor=[“白色”、“白色”、“白色”];
var myData=[30,60,29];
var myLabels=[“A”、“B”、“C”];
var-cx=150;
var-cy=150;
var半径=80;
pieChart(myData、myColor、myLabels);
函数图表(数据、颜色、MyLabel){
var合计=0;
对于(变量i=0;i
如果您的浏览器不支持HTML5画布,则会显示此文本。
工作得很好!谢谢你的帮助。从概念上讲,虽然我不明白“ctx.fillText(letter,x,y)”是如何从“myLabels”中提取字母的。两者之间的联系在哪里建立的?我投了赞成票:)不确定你是否看到了我最后一条评论的编辑:我只是在浏览代码,意识到,从概念上讲,我不明白“ctx.fillText(letter,x,y)”是如何建立的知道从“myLabels”那里拿走信件。两者之间的联系在哪里?谢谢。我想我明白了。因此drawWedge(startAngle、endAngle、fill、label、letter)
会自动将其5个元素中的每一个元素与drawWedge(accumAngle、accumAngle+sweeps[i]、colors[i]、data[i]、myLabels[i])
显然,我对编码还不熟悉,所以我只是想确保我了解所有内容。是的,你说得对。基本javascript:)