React ChartJS --使用更多数据集垂直缩放条形图

sgtfey8w  于 2022-11-06  发布在  Chart.js
关注(0)|答案(1)|浏览(152)

我正在使用React ChartJS构建一个条形图,当前看起来像x1c 0d1x
建立在其上的数据是动态的--也就是说,可以有更多(或更少)的行业。我希望固定条形图的宽度(例如,30像素),并根据数据集的数量来增加图表的高度。换句话说,我不关心图表的高度,它应该是数据集的数量的函数。
我该如何实现这一点?
我想分享我已经得到的代码,但它是相当通用的,可以张贴在这里,如果人们会发现有用的。

6rqinv9w

6rqinv9w1#

首先,您可以将canvas Package 在div中。

<div id="chartWrapper">
  <canvas id="myChart"></canvas>
</div>

您可以使用插件核心API,并根据定义的data.barThickness和可见的datasets计算beforeRender挂钩中的图表高度。

plugins: [{
  beforeRender : chart => {        
    if (!chart.config.options.nonChartAreaHeight) {
      var yAxis = chart.scales.y;
      chart.config.options.nonChartAreaHeight = chart.height - (yAxis.bottom - yAxis.top);
    }      
    const labelCount = chart.data.labels.length;
    const datasetCount = chart.data.datasets.map((ds, i) => chart.getDatasetMeta(i)).filter(m => !m.hidden).length;
    const chartAreaHeight = labelCount * datasetCount * chart.data.barThickness * 1.2;
      document.getElementById("chartWrapper").style.height = (chartAreaHeight + chart.config.options.nonChartAreaHeight) + 'px';      
  }
}],

然后,您还需要定义option.maintainAspectRatio: false,以防止Chart.js调整canvas的大小。
请看下面的可运行代码,看看它是如何工作的。
第一个

相关问题