Javascript Chart.js:一些部门没有显示差异是否太大

Javascript Chart.js:一些部门没有显示差异是否太大,javascript,chart.js,Javascript,Chart.js,我正在将以下配置传递给: 但是由于三者之间的巨大差异(考虑到c有多大),c最终会“重叠”其他所有东西,我只得到一个只有一种颜色的甜甜圈,只显示c 如果我为c尝试一个较小的值,所有三个扇区都显示良好 但我不明白,Chart.js应该能够显示所有片段(为最小扇区设置最小大小等) 是否有一些参数可以传递给配置以解决此问题?您可以使用对数刻度,但只能用于线条。对于您的用例来说,甜甜圈不是一个好的选择 配置: const config = { type: 'line', data: data

我正在将以下配置传递给:

但是由于三者之间的巨大差异(考虑到
c
有多大),
c
最终会“重叠”其他所有东西,我只得到一个只有一种颜色的甜甜圈,只显示
c

如果我为
c
尝试一个较小的值,所有三个扇区都显示良好

但我不明白,Chart.js应该能够显示所有片段(为最小扇区设置最小大小等)


是否有一些参数可以传递给配置以解决此问题?

您可以使用对数刻度,但只能用于线条。对于您的用例来说,甜甜圈不是一个好的选择

配置:

  const config = {
  type: 'line',
  data: data,
  options: {
    responsive: true,
    plugins: {
      title: {
        display: true,
        text: 'Chart.js Line Chart - Logarithmic'
      }
    },
    scales: {
      x: {
        display: true,
      },
      y: {
        display: true,
        type: 'logarithmic',
      }
    }
  },
};
设置:

const DATA_COUNT = 7;
const NUMBER_CFG = {count: DATA_COUNT, min: 0, max: 100};

const labels = Utils.months({count: 7});
const data = {
  labels: labels,
  datasets: [
    {
      label: 'Dataset 1',
      data: logNumbers(DATA_COUNT),
      borderColor: Utils.CHART_COLORS.red,
      backgroundColor: Utils.CHART_COLORS.red,
      fill: false,
    },
  ]
};
行动

const logNumbers = (num) => {
  const data = [];

  for (let i = 0; i < num; ++i) {
    data.push(Math.ceil(Math.random() * 10.0) * Math.pow(10, Math.ceil(Math.random() * 5)));
  }

  return data;
};

const actions = [
  {
    name: 'Randomize',
    handler(chart) {
      chart.data.datasets.forEach(dataset => {
        dataset.data = logNumbers(chart.data.labels.length);
      });
      chart.update();
    }
  },
];
const logNumbers=(num)=>{
常量数据=[];
for(设i=0;i{
dataset.data=日志号(chart.data.labels.length);
});
chart.update();
}
},
];

对于这样一个小问题,或者至少对于本应是默认用户体验行为的东西来说,这个解决方案似乎有点太多了:如果a=0、b=23908和c=20000000,我想我仍然可以清楚地看到我的甜甜圈图表上的3个部分。恐怕甜甜圈是必须的:(
const logNumbers = (num) => {
  const data = [];

  for (let i = 0; i < num; ++i) {
    data.push(Math.ceil(Math.random() * 10.0) * Math.pow(10, Math.ceil(Math.random() * 5)));
  }

  return data;
};

const actions = [
  {
    name: 'Randomize',
    handler(chart) {
      chart.data.datasets.forEach(dataset => {
        dataset.data = logNumbers(chart.data.labels.length);
      });
      chart.update();
    }
  },
];