<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 图片在甜甜圈段内

        Chart.js Picture inside doughnut segment(Chart.js 图片在甜甜圈段内)
          <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 图片在甜甜圈段内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  ChartJS Version 3 - common legend for multiple line charts(ChartJS 版本 3 - 多个折线图的常用图例)
                  Charts.js scales yaxes ticks min max doesnt work(Charts.js 缩放 yaxes 刻度 min max 不起作用)
                  How to expand the slice of donut chart in chartjs?(如何在chartjs中扩展圆环图的切片?)
                  Chart.js yAxes Ticks stepSize not working (fiddle)(Chart.js yAxes Ticks stepSize 不起作用(小提琴))
                  Rounded corners on chartJS v.2 - bar charts (with negative values)(chartJS v.2 上的圆角 - 条形图(带负值))
                  How to hide value in Chart JS bar(如何在 Chart JS 栏中隐藏值)

                      <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>
                          <tbody id='QIax9'></tbody>
                        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'>