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 条形图固定宽度动态数据集的主要内容,如果未能解决你的问题,请参考以下文章

动态更新chartjs图表的值

Chartjs 条形图在悬停时显示旧数据

如何通过Websocket的数据动态更新Ngx图表的条形图

在 SwiftUI 中,如何为条形图创建动态矩形?

java生成饼状图,条形图,折线图的技术可以动态的显示

ChartJs - 具有多个数据集的圆环图上的圆形边框