Chart.js圆角甜甜圈

jpenna

我使用Chart.js创建了一个甜甜圈图,并且希望它的两端都具有圆角。我希望它是这样的:

我想要的方式

但是我有这样的特点,并且边缘清晰:

我有这个

我发现的最好的答案是:如何在Chart.js条形图上放置圆角,但这是条形图,而且我不知道如何使它适合甜甜圈。

这是我的代码:

的HTML

<div class="modal-div-canvas js-chart">
  <div class="chart-canvas">
     <canvas id="openedCanvas" width="1" height="1"></canvas>
        <div class="chart-background"></div>
            <span class="chart-unique-value">
                 <span class="js-count">
                    85
                 </span>
                 <span class="cuv-percent">%</span>
            </span>
        </div>
  </div>

JS

var deliveredData = {
        labels: [
            "Value"
        ],
        datasets: [
            {
                data: [85, 15)],
                backgroundColor: [
                    "#3ec556",
                    "rgba(0,0,0,0)"
                ],
                hoverBackgroundColor: [
                    "#3ec556",
                    "rgba(0,0,0,0)"
                ],
                borderWidth: [
                    0, 0
                ]
            }]
    };

    var deliveredOpt = {
        cutoutPercentage: 88,
        animation: {
            animationRotate: true,
            duration: 2000
        },
        legend: {
            display: false
        },
        tooltips: {
            enabled: false
        }
    };

   var chart = new Chart($('#openedCanvas'), {
        type: 'doughnut',
        data: deliveredData,
        options: deliveredOpt
    });
}};

有人知道该怎么做吗?

亚历山大·里斯·里贝罗

我在@potatopeeling代码段中进行了一些更改,使它与Chart.js的更新版本(2.9.x)兼容,并且还修复了应该呈现“ startArc”和上一段中的颜色与该“ startArc”相匹配的地方,因此我们可以有两个以上的细分 结果如下:

在此处输入图片说明

Chart.defaults.RoundedDoughnut    = Chart.helpers.clone(Chart.defaults.doughnut);
Chart.controllers.RoundedDoughnut = Chart.controllers.doughnut.extend({
    draw: function(ease) {
        var ctx           = this.chart.ctx;
        var easingDecimal = ease || 1;
        var arcs          = this.getMeta().data;
        Chart.helpers.each(arcs, function(arc, i) {
            arc.transition(easingDecimal).draw();

            var pArc   = arcs[i === 0 ? arcs.length - 1 : i - 1];
            var pColor = pArc._view.backgroundColor;

            var vm         = arc._view;
            var radius     = (vm.outerRadius + vm.innerRadius) / 2;
            var thickness  = (vm.outerRadius - vm.innerRadius) / 2;
            var startAngle = Math.PI - vm.startAngle - Math.PI / 2;
            var angle      = Math.PI - vm.endAngle - Math.PI / 2;

            ctx.save();
            ctx.translate(vm.x, vm.y);

            ctx.fillStyle = i === 0 ? vm.backgroundColor : pColor;
            ctx.beginPath();
            ctx.arc(radius * Math.sin(startAngle), radius * Math.cos(startAngle), thickness, 0, 2 * Math.PI);
            ctx.fill();

            ctx.fillStyle = vm.backgroundColor;
            ctx.beginPath();
            ctx.arc(radius * Math.sin(angle), radius * Math.cos(angle), thickness, 0, 2 * Math.PI);
            ctx.fill();

            ctx.restore();
        });
    }
});

window.onload = function() {
    new Chart(document.getElementById('usersChart'), {
        type   : 'RoundedDoughnut',
        data   : {
            datasets: [
                {
                    data           : [40, 20, 20, 20],
                    backgroundColor: [
                        '#e77099',
                        '#5da4e7',
                        '#8f75e7',
                        '#8fe768'
                    ],
                    borderWidth    : 0
                }]
        },
        options: {
            cutoutPercentage: 70
        }
    });
};
<script src="https://github.com/chartjs/Chart.js/releases/download/v2.9.3/Chart.min.js"></script>
<link rel="stylesheet" href="https://github.com/chartjs/Chart.js/releases/download/v2.9.3/Chart.min.css">
<div style="width: 200px; height: 200px;">
<canvas id="usersChart" width="1" height="1"></canvas>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

chart.js:甜甜圈图中的标签

Chart.js甜甜圈图大小调整

chart.js中的甜甜圈图调整问题

图表中的chart.js 甜甜圈图例

Chart.js v2:甜甜圈内甜甜圈之间的空间

重绘旧的甜甜圈并通过单击每种颜色Chart.js创建一个新的甜甜圈

如何使用Chart.js创建单值甜甜圈或饼图?

Chart.js - 甜甜圈显示活动段工具提示(点击外部按钮)

Chart.js HTML自定义图例问题与甜甜圈图

在Chart.js甜甜圈图上检测onHover是否完成

如何在Chart.js甜甜圈图上显示第二组标签?

Chart.js 2.0甜甜圈工具提示百分比

使用Chart js插件创建类似甜甜圈图的弧线

如何自定义Chart.js 2.0甜甜圈图的工具提示?

Chart.js甜甜圈动画/顺时针绘制

如何摆脱chart.js甜甜圈图中较大的左右边距?

如何在Chart.js的甜甜圈图中使用径向CanvasGradients?

如何使用Chart.js在甜甜圈图中添加文本?

如何更改chart.js甜甜圈图上的鼠标光标?

如何在Chart.js甜甜圈图中添加第二组标签?

Chart.js使用文本工具提示问题扩展了甜甜圈

如何添加到chart.js(甜甜圈图)的链接?

如何使用Chart.js在甜甜圈图的中心添加文本?

Chart.js:甜甜圈中间的千位分隔符和标题

Chart.js(甜甜圈图)中的内部半径未更改

如何在chart.js甜甜圈图中使用两个数据集?

Chart.JS:当甜甜圈大小足以容纳文本时,如何仅显示数据标签?

如何在Chart.JS的半个甜甜圈图中添加一些文本?

Chart.js (v3) 圆边甜甜圈,但不是无处不在