Search code examples
reactjsreact-chartjs

Line chart legend border style using react-chartjs-2


Is it possible to make the legend box of dashed line in line chart to have no dashed border?

I read about generateLegend() and legendCallback but I can't understand how it works in react-chartjs-2 together with React functional component. Also, I'm not sure if they can be used to change the border style of legend.

This is my sample code:

import { Line } from "react-chartjs-2";

const LineChart = () => {
    const data = {
        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
        datasets: [
            {
                label: "Line 1", data: [10, 10, 20, 20, 30, 30]
            },
            {
                label: 'Line 2',
                borderDash: [15, 5],
                data: [20, 20, 20, 20, 20, 20],
            }],
    };

    const options = {
        legend: {
            position: legendPosition,
            align: legendAlign,
        }
    };

    return <Line data={data} options={options} />
};

This is sample of desired Line 1(red) and Line 2(grey dahsed) enter image description here


Solution

  • You have to use borderWidth:0 so, please remove borderDash: [15, 5] and add borderWidth: 0,. Or you can completely replace data with below:

    const data = {
        labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
        datasets: [
            {
                borderWidth: 0,
                label: "Line 1", data: [10, 10, 20, 20, 30, 30]
            },
            {
                label: 'Line 2',
                borderWidth: 0,
                data: [20, 20, 20, 20, 20, 20],
            }],
    };
    

    Update

    You have to use borderWidth: 0 in data.datasets and this is mandatory for you requirement. Moreover, you can pass options={options} into Line to have more configuration for legend like legend background-color or legend font-color or legend boxWidth and so on.

    Here is the Code Sandbox

    Here is the output picture

    enter image description here