Chart.js 水平条形图宽度

6

我有以下柱状图:

bar chart

上述图表是使用以下代码生成的:

    var myChart = new Chart(ctx, {
    type: 'horizontalBar',
    data: {
        labels: labels,
        datasets: [{
            label: '# of Votes',
            data: data,
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)',
                'rgba(255, 159, 64, 0.2)'
            ],
            borderColor: [
                'rgba(255,99,132,1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)',
                'rgba(255, 159, 64, 1)'
            ]
        }]
    },
    options: {
        responsive: true,
        scales: {
            yAxes: [{
                borderWidth: 40,
                ticks: {
                    beginAtZero:true
                }
            }]
        }
    }
});

如您所见,条形图的宽度相当小。

我的问题是,我该如何增加每个条形的宽度?


1
条形的宽度是否由数据定义? - Sven Koluem
1
不确定为什么这个被踩了,我也遇到了同样的问题,但只是在水平条形图上。@SvenKoluem,OP指的是X轴的宽度,在ChartJS的情况下,这取决于它是水平条形图还是常规条形图。就对话而言,我们谈论的是垂直高度。 - Jeff Beagley
5个回答

2
只需要增加画布的高度。例如: <canvas id="horizontalbar" height="1000px"></canvas>

谢谢,那帮了我。 - Shinox

1

4
这让我感到分类有重叠。 - Jeff Beagley

1

虽然这不是官方解决方法,但对我有效。我参考了这个链接https://github.com/chartjs/Chart.js/issues/2787的建议。

我将所有的值存储在多个数组中,所以通过计算对象数量并乘以一个特定的数字,然后设置图表包装器(围绕图表的div)的高度。

<div class="chart-wrapper horizontalBar" style="position: relative; height: 50vh;">
    <canvas id="chart-location"></canvas>
</div>

然后在绘制图表后,设置高度(location_labels是一个包含所有标签的数组)。
$( ".horizontalBar" ).height(location_labels.length * 30);

0

试一下

对于大多数版本,这将解决它

import {Chart} from "chart.js"

Chart.defaults.datasets.bar.barThickness = 73;

//also try barPercentage, maxBarThickness

0
只需在canvas元素中添加height标签即可。这对我来说解决了问题。
<canvas id="Chart" height="50">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接