如何在chart.js中绘制条形图的基线

Aru*_*mar 1 javascript jquery charts angularjs chart.js

我有这样的条形图

在此处输入图片说明

我需要在下面绘制水平虚线

在此处输入图片说明

我正在使用图表js创建此图。请帮助我画出这个基线。

var ctx = document.getElementById("baseLinebar");

var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ["25", "60", "15", "30"],
        datasets: [{
            data: [25, 60, 15, 30],
            backgroundColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)'
            ]
        }]
    },
    options: {
        scales: {
            xAxes: [{
                        gridLines: {
                            display:false
                        },
                        barThickness:40
                    }],
            yAxes: [{
                        gridLines: {
                            display:false
                        }
                    }]

       }
    }
});
Run Code Online (Sandbox Code Playgroud)

Ron*_*oud 5

在这里,我们已经使用horizonalLinePlugin并将其注册到Chart pluginService。您可以将horizontalLine用作optionin 的属性config。用这个小提琴

JS

var config = {
                type: 'bar',
                data: {
                    labels: ["25", "60", "15", "30"],
                    datasets: [{
                        data: [25, 60, 15, 30],
                        backgroundColor: [
                            'rgba(255, 99, 132, 1)',
                            'rgba(54, 162, 235, 1)',
                            'rgba(255, 206, 86, 1)',
                            'rgba(75, 192, 192, 1)'
                        ]
                    }]
                },
                options: {
                    scales: {
                        xAxes: [{
                            gridLines: {
                                display: true
                            },
                            barThickness: 40,
                            stacked: true

                        }],
                        yAxes: [{
                            gridLines: {
                                display: true
                            },
                            stacked: true

                        }]

                    },
                    horizontalLine: [{
                        y: 50,
                        style: "rgba(255, 0, 0, .4)",
                        text: "max"
                    },  {
                        y: 15,
                        text: "min"
                    }]
                }
            };

            ;
            var ctx = document.getElementById("canvas");

            var horizonalLinePlugin = {
                afterDraw: function (chartInstance) {
                    var yScale = chartInstance.scales["y-axis-0"];
                    var canvas = chartInstance.chart;
                    var ctx = canvas.ctx;
                    var index;
                    var line;
                    var style;

                    if (chartInstance.options.horizontalLine) {
                        for (index = 0; index < chartInstance.options.horizontalLine.length; index++) {
                            line = chartInstance.options.horizontalLine[index];

                            if (!line.style) {
                                style = "rgba(169,169,169, .6)";
                            } else {
                                style = line.style;
                            }

                            if (line.y) {
                                yValue = yScale.getPixelForValue(line.y);
                            } else {
                                yValue = 0;
                            }

                            ctx.lineWidth = 3;

                            if (yValue) {
                                ctx.beginPath();
                                ctx.moveTo(0, yValue);
                                ctx.lineTo(canvas.width, yValue);
                                ctx.strokeStyle = style;
                                ctx.stroke();
                            }

                            if (line.text) {
                                ctx.fillStyle = style;
                                ctx.fillText(line.text, 0, yValue + ctx.lineWidth);
                            }
                        }
                        return;
                    };
                }
            };
            Chart.pluginService.register(horizonalLinePlugin);

            var myChart = new Chart(ctx, config);
Run Code Online (Sandbox Code Playgroud)