处理值的巨大差异时,Chart Js圆环图中断

rdlzhqv9  于 2023-03-12  发布在  Chart.js
关注(0)|答案(1)|浏览(201)

我正在尝试创建一个自定义外观的圆环图使用图表js.

当数据值彼此接近时,我的代码(fiddle)工作正常,但当尝试处理值远大于其他值的数据时,图表中断,broken fiddle

我不明白为什么会发生这种情况,我认为这与弧间距和半径有关,但我不知道如何处理它,并仍然使其看起来像我所需要的
代码

  1. <script src="https://cdn.jsdelivr.net/npm/chart.js@3.8.0/dist/chart.js"></script>
  2. <canvas id="myChart" width="200" height="200"></canvas>
  1. let color1 = '#98A3CC';
  2. let color2 = '#6475B2';
  3. let hoverColor="#283F94";
  4. var options = {
  5. type: 'doughnut',
  6. data: {
  7. labels: ["One", "Two", "Three", "Four"],
  8. datasets: [{
  9. label: '# of Votes',
  10. data: [3956745.7,5400,4086.06,50000],
  11. backgroundColor: [
  12. color1, color2, color1, color2],
  13. hoverBackgroundColor: new Array(4).fill(hoverColor),
  14. }]
  15. },
  16. options: {
  17. cutout: '90%',
  18. radius: '90%',
  19. //hover: {mode: null},
  20. plugins: {
  21. legend: {
  22. display: false
  23. }
  24. },
  25. elements: {
  26. arc: {
  27. spacing: -50,
  28. borderRadius: 15
  29. }
  30. }
  31. }
  32. }
  33. var chartInstance = new Chart(document.getElementById("myChart"), options);
gv8xihay

gv8xihay1#

spacing: -50属性导致了这种情况,因为间距是负的,条的尖端与下一个条的末端重叠,当你放置一个值比其他条高得多的条时,它会与所有其他条重叠。我们可以通过删除border-radius来更好地观察这种行为:

因此,解决方案是调整spacing属性的值,以防数据数组中的某个值比其他值高出太多,如我们所见:

相关问题