javascriptreactjschart.jsreact-chartjsreact-chartjs-2

React chart : prevent chart's canvas scaling with height and width


I am using Horizontal Bar from react-chart-js (https://github.com/reactchartjs/react-chartjs-2/blob/react16/example/src/charts/HorizontalBar.js) as below,

  const data = {
    label: ["graph"],
    datasets: [
      {
        label: "A",
        backgroundColor: "red",
        data: [50],
      },
      {
        label: "B",
        backgroundColor: "yellow",
        data: [10],
      },
    ],
  };

  const chartOptions = {
    scales: {
      xAxes: [
        {
          stacked: true,
          barPercentage: 0.2,
        },
      ],
      yAxes: [
        {
          stacked: true,
          barPercentage: 0.2,
        },
      ],
    },
  };

and

<div>
  <HorizontalBar data={data} options={chartOptions}/>
</div>

I tried applying height on to div or horizontal bar directly to restrict scaling up of the canvas but it dint solve though. Is it possible to supply height and width to the canvas of chart respectively.


Solution

  • In my case, setting maintainAspectRatio:false along with supplying height/width on div

    <div style={{height:'100px',width:'200px'}}>
    <HorizontalBar data={data} options={chartOptions}/>
    </div>
    

    helped in restricting the canvas's scalability.

    Relevant Source: https://www.chartjs.org/docs/latest/general/responsive.html#important-note