ChartJS 条形图固定宽度动态数据集
Posted
技术标签:
【中文标题】ChartJS 条形图固定宽度动态数据集【英文标题】:ChartJS bar chart fixed width for dynamic data sets 【发布时间】:2018-02-05 09:56:44 【问题描述】:我正在使用 ChartJs 创建条形图。 数据集是动态的。由于数据集是动态的,所以条形的宽度也在变化。
例如,仅适用于一个标签的条形宽度
许多标签的条形宽度
如何在不考虑标签数量的情况下为栏设置固定宽度
我正在使用以下选项。
xAxes: [
barPercentage: 1,
categoryPercentage: 0.3
]
【问题讨论】:
【参考方案1】:您可以将“categoryPercentage”划分为尽可能多的列并乘以当前数据集中的列数
https://jsfiddle.net/qrwvvtxs/2/
var barChartData1 =
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
label: 'Dataset 1',
data: [3,2,7,4,5,7,6]
,
label: 'Dataset 2',
backgroundColor: "#faa",
data: [11,13,21,13,16,21,18]
]
;
var barChartData2 =
labels: ["January"],
datasets: [
label: 'Dataset 1',
data: [6]
,
label: 'Dataset 2',
backgroundColor: "#faa",
data: [11]
]
;
var ctx1 = document.getElementById("canvas1").getContext("2d");
var ctx2 = document.getElementById("canvas2").getContext("2d");
var myBar1 = new Chart(ctx1,
type: 'bar',
data: barChartData1,
options:
responsive: true,
scales:
xAxes: [
barPercentage: 1,
categoryPercentage: 0.5 / 10 * barChartData1.datasets[0].data.length
],
yAxes: [
ticks:
beginAtZero:true
]
);
var myBar2 = new Chart(ctx2,
type: 'bar',
data: barChartData2,
options:
responsive: true,
scales:
xAxes: [
barPercentage: 1,
categoryPercentage: 0.5 / 10 * barChartData2.datasets[0].data.length
],
yAxes: [
ticks:
beginAtZero:true
]
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.min.js"></script>
<canvas id="canvas1"></canvas>
<canvas id="canvas2"></canvas>
【讨论】:
哇,这很有帮助 @rmaksim 这是一个很好的解决方案。但我面临另一个问题。由于我们使用的是动态数据,因此数据长度也应该是动态的。例如,如果数据长度为 24,条形将开始重叠。你能看看那个场景吗?以上是关于ChartJS 条形图固定宽度动态数据集的主要内容,如果未能解决你的问题,请参考以下文章