Define fixed width of bars for Chartjs barchart

Discussão em 'Angular' iniciado por Glim, Junho 16, 2025.

  1. Glim

    Glim Guest

    I work on an Angular application with charts with Chart.js. On the webpage, I have several charts of type horizontal bar charts.

    Here is the definition of the chart in the html template :

    <p-chart type="bar" [data]="datas" [plugins]="plugins"
    [options]="options" width="280px" height="60px" />


    As you can see, I defined a width for the chart but it corresponds to the width of the canvas, not the width of the bars.

    Here is the result :

    [​IMG]

    The width of the bars are different, but with other data it can be the same. I don't have any explanation to this phenomenon. But I would like to fix this issue.

    Here are the options of the chart :

    {
    indexAxis: 'y',
    animation: false,
    aspectRatio: 0.2,
    maintainAspectRatio: false,
    scales: {
    x: {
    display: false,
    },
    y: {
    display: false,
    },
    },
    x: {
    beginAtZero: true,
    stacked: true,
    },
    y: {
    beginAtZero: true,
    stacked: true,
    },
    cutout: '50%',
    plugins: {
    title: {
    color: 'gray',
    font: {
    weight: 'bold',
    size: 12,
    },
    display: (ctx): boolean => {
    return ctx.chart.data.datasets.some((dataset) => dataset.data.some((value) => value > 0));
    },
    datalabels: {
    color: 'white',
    formatter: (val, ctx): string => {
    if (val) {
    return ctx.chart.data.datasets[ctx.datasetIndex].data[0].toString();
    }
    return '';
    },
    },
    tooltip: {
    enabled: true,
    callbacks: {
    title: (): string => '',
    label: (tooltipItem: any): string => {
    const { chart } = tooltipItem;
    const { label } = chart.data.datasets[tooltipItem.datasetIndex];
    const value: number = chart.data.datasets[tooltipItem.datasetIndex].data[0];
    return `${label}: ${value}`;
    },
    },
    },
    },
    legend: {
    display: false,
    position: 'top',
    },
    },
    }


    I tried to change barThickness, barPercentage, categoryPercentage, responsive... Some solutions I found in other topics but nothing worked.

    Does anyone have an idea to define a width for the bars so they have the same width, whatever the data are ?

    Thanks in advance !

    Continue reading...

Compartilhe esta Página