【问题标题】:ChartJs bar chart - keep bars left instead of equally spread across the widthChartJs 条形图 - 将条形保持在左侧而不是在宽度上均匀分布
【发布时间】:2019-02-16 03:36:20
【问题描述】:

我正在使用 ChartJs 2.7.2 来绘制一个简单的条形图。在我的应用程序中,条形图的数量将在 5 到 15 之间变化。默认情况下,条形图均匀分布在图表的整个宽度上。但是,我希望这些条具有固定宽度/左对齐(所以当只有 5 个条时,它们不会占据整个宽度,而是保持左对齐)。请参阅下面的屏幕截图以进行说明。

【问题讨论】:

  • 我也对这个感兴趣...您能找到解决方案吗?
  • 如果您事先知道要显示多少条,您就不能用 0 填充未使用的条吗?

标签: chart.js bar-chart


【解决方案1】:

您可以提供一个labels 数组,用空字符串填充到所需的长度,例如15.

这将确保轴上的类别数量一致,从而确保条形保持相同的宽度并左对齐,即使条形较少 (Fiddle)。

(如果你愿意,你也可以用0's 填充data 数组以保持一致性,但这不是必需的 - labels 数组决定了轴的样子。)

var data = [12, 19, 3, 5, 2];
var labels = ["a", "b", "c", "d", "e"];

for (var i = labels.length; i < 15; i++) {
  labels.push("");
}

var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: labels,
    datasets: [{
      label: 'Count',
      data: data
    }]
  },
  options: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  } 
});

【讨论】:

  • 这似乎确实可行 - 有点奇怪的 ChartJs 不会抱怨缺少数据(标签和数据数组的大小不再相同),但似乎工作。
  • 好点 - 只是添加了一个简短的相关注释来回答(如果你愿意,你也可以用 0's 填充 data 数组以保持一致性,但这不是必需的 - @987654329 @array 决定了轴的样子。)
猜你喜欢
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 2012-09-29
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多