<tfoot id='mkAdU'></tfoot>

    <bdo id='mkAdU'></bdo><ul id='mkAdU'></ul>
        <i id='mkAdU'><tr id='mkAdU'><dt id='mkAdU'><q id='mkAdU'><span id='mkAdU'><b id='mkAdU'><form id='mkAdU'><ins id='mkAdU'></ins><ul id='mkAdU'></ul><sub id='mkAdU'></sub></form><legend id='mkAdU'></legend><bdo id='mkAdU'><pre id='mkAdU'><center id='mkAdU'></center></pre></bdo></b><th id='mkAdU'></th></span></q></dt></tr></i><div id='mkAdU'><tfoot id='mkAdU'></tfoot><dl id='mkAdU'><fieldset id='mkAdU'></fieldset></dl></div>

        <small id='mkAdU'></small><noframes id='mkAdU'>

        <legend id='mkAdU'><style id='mkAdU'><dir id='mkAdU'><q id='mkAdU'></q></dir></style></legend>

      1. Chart.js 图片在甜甜圈段内

        时间:2023-11-01
          <i id='IfojQ'><tr id='IfojQ'><dt id='IfojQ'><q id='IfojQ'><span id='IfojQ'><b id='IfojQ'><form id='IfojQ'><ins id='IfojQ'></ins><ul id='IfojQ'></ul><sub id='IfojQ'></sub></form><legend id='IfojQ'></legend><bdo id='IfojQ'><pre id='IfojQ'><center id='IfojQ'></center></pre></bdo></b><th id='IfojQ'></th></span></q></dt></tr></i><div id='IfojQ'><tfoot id='IfojQ'></tfoot><dl id='IfojQ'><fieldset id='IfojQ'></fieldset></dl></div>
            <legend id='IfojQ'><style id='IfojQ'><dir id='IfojQ'><q id='IfojQ'></q></dir></style></legend>

              <tbody id='IfojQ'></tbody>
          • <tfoot id='IfojQ'></tfoot>

              • <bdo id='IfojQ'></bdo><ul id='IfojQ'></ul>

                  <small id='IfojQ'></small><noframes id='IfojQ'>

                  本文介绍了Chart.js 图片在甜甜圈段内的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我发现了关于 chart.js 和我希望为我的网站使用圆环图,我找到了一个示例,我可以从中获取基础知识:

                  解决方案

                  没有用于在圆环图中绘制图像的原生 ChartJS API.

                  但您可以在绘制图表后手动添加图像.

                  对于甜甜圈中的每个楔子:

                  警告:未经测试的代码...可能需要进行一些调整

                  1. 向内平移到甜甜圈的中间.

                    //计算甜甜圈中心 (cx,cy) &翻译成它var cx=chart.width/2;var cy=chart.height/2;context.translate(cx,cy);

                  2. 旋转到目标甜甜圈楔的中间角度

                    var startAngle = chart.segments[thisWedgeIndex].startAngle;var endAngle = chart.segments[thisWedgeIndex].endAngle;var midAngle = startAngle+(endAngle-startAngle)/2;//以 midAngle 旋转context.rotate(midAngle);

                  3. 向外平移到目标甜甜圈楔的中点:

                    //给定圆环半径(innerRadius)和圆环半径(radius)var midWedgeRadius=chart.innerRadius+(chart.radius-chart.innerRadius)/2;context.translate(midWedgeRadius,0);

                  4. 将图像偏移一半图像宽度 &身高:

                    //给定图像宽度 &高度context.drawImage(theImage,-theImage.width/2,-theImage.height/2);

                  5. 通过将变换矩阵重置为默认值来清理变换:

                    //撤消翻译 &旋转context.setTransform(1,0,0,1,0,0);

                  I found out about chart.js and I am looking to use a doughnut chart for my website, I found a example where I can take the basics from : https://jsfiddle.net/9wp4f693/2/

                  I've only found something like this, but it was to draw text inside the segments, not to add pictures.

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

                  But I would like to have pictures inside my segments, something like this but I have no clue how I would do this :

                  解决方案

                  There is no native ChartJS API for drawing an image inside a donut chart.

                  But you can manually add the images after the chart has been drawn.

                  For each wedge in the donut:

                  Warning: untested code ... some tweaking might be required

                  1. Translate inward to the middle of the donut.

                    // calculate donut center (cx,cy) & translate to it
                    var cx=chart.width/2;
                    var cy=chart.height/2;
                    context.translate(cx,cy);
                    

                  2. Rotate to the mid-angle of the target donut-wedge

                    var startAngle = chart.segments[thisWedgeIndex].startAngle;
                    var endAngle = chart.segments[thisWedgeIndex].endAngle;
                    var midAngle = startAngle+(endAngle-startAngle)/2;
                    
                    // rotate by the midAngle
                    context.rotate(midAngle);
                    

                  3. Translate outward to the midpoint of the target donut-wedge:

                    // given the donut radius (innerRadius) and donut radius (radius)
                    var midWedgeRadius=chart.innerRadius+(chart.radius-chart.innerRadius)/2;
                    context.translate(midWedgeRadius,0);
                    

                  4. Draw the image offset by half the image width & height:

                    // given the image width & height
                    context.drawImage(theImage,-theImage.width/2,-theImage.height/2);
                    

                  5. Clean up the transformations by resetting the transform matrix to default:

                    // undo translate & rotate
                    context.setTransform(1,0,0,1,0,0);
                    

                  这篇关于Chart.js 图片在甜甜圈段内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何通过鼠标悬停和多个更新解决 Chart.js 2.0 问题? 下一篇:React-Chart.js 图例 onClick 函数

                  相关文章

                    <bdo id='QIax9'></bdo><ul id='QIax9'></ul>
                  <i id='QIax9'><tr id='QIax9'><dt id='QIax9'><q id='QIax9'><span id='QIax9'><b id='QIax9'><form id='QIax9'><ins id='QIax9'></ins><ul id='QIax9'></ul><sub id='QIax9'></sub></form><legend id='QIax9'></legend><bdo id='QIax9'><pre id='QIax9'><center id='QIax9'></center></pre></bdo></b><th id='QIax9'></th></span></q></dt></tr></i><div id='QIax9'><tfoot id='QIax9'></tfoot><dl id='QIax9'><fieldset id='QIax9'></fieldset></dl></div>
                  1. <legend id='QIax9'><style id='QIax9'><dir id='QIax9'><q id='QIax9'></q></dir></style></legend>
                  2. <tfoot id='QIax9'></tfoot>

                    <small id='QIax9'></small><noframes id='QIax9'>