Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 画布饼图:存在ctx.FillText()问题,因此我的标签不会';不恰当地出现_Javascript_Canvas - Fatal编程技术网

Javascript 画布饼图:存在ctx.FillText()问题,因此我的标签不会';不恰当地出现

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);

在我的画布饼图中,我试图让我的标签显示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);



     // 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:)