Chart.js:如果差异太大,部分板块不显示

uemypmqf  于 2022-11-06  发布在  Chart.js
关注(0)|答案(2)|浏览(218)

我将以下配置传递给Chart.js

  1. {
  2. type: 'doughnut',
  3. data: {
  4. labels: ['a', 'b', 'c'],
  5. datasets: [{
  6. data: [878, 19020, 100412286],
  7. backgroundColor: [
  8. 'rgb(255, 99, 132)',
  9. 'rgb(54, 162, 235)',
  10. 'rgb(255, 205, 86)'
  11. ],
  12. hoverOffset: 4
  13. }]
  14. }
  15. }

但由于这三个变量之间的巨大差异(考虑到c大得多),c最终会“重叠”其他所有变量,我只得到一个只有一种颜色的甜甜圈,只显示c
如果我尝试为c设置一个较小的值,则所有三个扇区都显示良好。
但是我不明白,Chart.js应该已经能够显示所有的部分(为最小的扇区设置最小的大小等)。
是否有一些参数我可以传递给配置来修复这个问题?

mutmk8jj

mutmk8jj1#

您可以使用对数刻度,但只能用于线。对于您的用例,圆环不是一个好的选择
https://www.chartjs.org/docs/latest/samples/scales/log.html
设定:

  1. const config = {
  2. type: 'line',
  3. data: data,
  4. options: {
  5. responsive: true,
  6. plugins: {
  7. title: {
  8. display: true,
  9. text: 'Chart.js Line Chart - Logarithmic'
  10. }
  11. },
  12. scales: {
  13. x: {
  14. display: true,
  15. },
  16. y: {
  17. display: true,
  18. type: 'logarithmic',
  19. }
  20. }
  21. },
  22. };

设定:

  1. const DATA_COUNT = 7;
  2. const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};
  3. const labels = Utils.months({count: 7});
  4. const data = {
  5. labels: labels,
  6. datasets: [
  7. {
  8. label: 'Dataset 1',
  9. data: logNumbers(DATA_COUNT),
  10. borderColor: Utils.CHART_COLORS.red,
  11. backgroundColor: Utils.CHART_COLORS.red,
  12. fill: false,
  13. },
  14. ]
  15. };

动作

  1. const logNumbers = (num) => {
  2. const data = [];
  3. for (let i = 0; i < num; ++i) {
  4. data.push(Math.ceil(Math.random() * 10.0) * Math.pow(10, Math.ceil(Math.random() * 5)));
  5. }
  6. return data;
  7. };
  8. const actions = [
  9. {
  10. name: 'Randomize',
  11. handler(chart) {
  12. chart.data.datasets.forEach(dataset => {
  13. dataset.data = logNumbers(chart.data.labels.length);
  14. });
  15. chart.update();
  16. }
  17. },
  18. ];
展开查看全部
7xllpg7q

7xllpg7q2#

一种替代方法是使用3个数据集,每个数据集对应一个数据。

  1. labels: ['a', 'b', 'c'],
  2. datasets: [
  3. {
  4. label: "My First Dataset",
  5. data: [878,0,0],
  6. backgroundColor: [
  7. "rgb(255, 205, 86)",
  8. "rgb(255, 99, 132)",
  9. "rgb(54, 162, 235)",
  10. ],
  11. offset:0,
  12. hoverOffset: 0,
  13. },
  14. {
  15. label: "My First Dataset2",
  16. data: [0,19020,0],
  17. backgroundColor: [
  18. "rgb(255, 205, 86)",
  19. "rgb(255, 99, 132)",
  20. "rgb(54, 162, 235)",
  21. ],
  22. offset:0,
  23. hoverOffset: 0,
  24. },
  25. {
  26. label: "My First Dataset2",
  27. data: [0,0,100412286],
  28. backgroundColor: [
  29. "rgb(255, 205, 86)",
  30. "rgb(255, 99, 132)",
  31. "rgb(54, 162, 235)",
  32. ],
  33. offset:0,
  34. hoverOffset: 0,
  35. },
  36. ],

我希望这对你有帮助。

展开查看全部

相关问题