Marc Rasmussen
Marc Rasmussen

Reputation: 20545

Chart.js horizontal bar width

I have the following bar chart:

bar chart

The above chart is generated with the following code:

    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
                }
            }]
        }
    }
});

As you can see, the bar width is fairly small.

My question is, how can I increase the width of each bar?

Upvotes: 6

Views: 16576

Answers (5)

Abraham
Abraham

Reputation: 15640

Try this

For most versions, this would solve it

import {Chart} from "chart.js"

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

//also try barPercentage, maxBarThickness

Upvotes: 0

banoth ravinder
banoth ravinder

Reputation: 1354

Just add height tag in canvas element. This solved for me.

<canvas id="Chart" height="50">

Upvotes: 0

jaykwapong
jaykwapong

Reputation: 31

Simply increase the canvas height. For Example;

<canvas id="horizontalbar" height="1000px"></canvas>

Upvotes: 2

Jeff Beagley
Jeff Beagley

Reputation: 1025

While this is not an official fix, it worked for me. I took advice from this link, https://github.com/chartjs/Chart.js/issues/2787

I store all my values within multiple arrays, so count number of objects and multiply by a specific number and set height of your chart wrapper ( div around the chart ).

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

Then after the chart is drawn, set the height (location_labels is an array housing all my labels)

$( ".horizontalBar" ).height(location_labels.length * 30);

Upvotes: 2

Leogout
Leogout

Reputation: 1247

You have the barThickness option as mentionned in the docs here -> http://www.chartjs.org/docs/#bar-chart-chart-options

Upvotes: 1

Related Questions