【问题标题】:Display values in Pareto chart using Chart.js 2.0.2使用 Chart.js 2.0.2 在帕累托图中显示值
【发布时间】:2016-04-28 23:53:37
【问题描述】:

我有一个帕累托图(使用 Chart.js 版本:2.0.2),我需要在条形图内和线下显示值。

任何帮助将不胜感激:

这是代码(希望对某人有用):

<canvas id="canvas"></canvas>

<script type="text/javascript">
    var data = {
        labels: ["8","7","9","11","10"],
        datasets: [{
            type: "line",
            label: "Acumulado",
            borderColor: "#BA1E14",
            backgroundColor: "#BA1E14",
            pointBorderWidth: 5,
            fill: false,
            data: [34.04,57.45,76.60,89.36,100.00],
            yAxisID: 'y-axis-2'
        },{
            type: "bar",
            label: "Asistencia",
            borderColor: "#56B513",
            backgroundColor: "#56B513",
            data: [16,11,9,6,5],
            yAxisID: 'y-axis-1'
        },{
            type: "bar",
            label: "Solución",
            borderColor: "#000FAA",
            backgroundColor: "#000FAA",
            data: [16,11,9,6,5],
            yAxisID: 'y-axis-1'
        }]
    };

    var options = {
        scales: {
            xAxes: [{
                stacked: true,
                scaleLabel: {
                    display: true,
                    labelString: "Estaciones"
                }
            }],

            yAxes: [{
                type: "linear",
                position: "left",
                id: "y-axis-1",
                stacked: true,
                ticks: {
                    suggestedMin: 0
                },
                scaleLabel: {
                    display: true,
                    labelString: "Minutos"
                }
            },{
                type: "linear",
                position: "right",
                id: "y-axis-2",
                ticks: {
                    suggestedMin: 0,
                    callback: function(value) {
                        return value + "%";
                    }
                },
                scaleLabel: {
                    display: true,
                    labelString: "Porcentaje"
                }
            }]
        }
    };

    window.onload = function() {
        var ctx = document.getElementById("canvas").getContext("2d");

        window.myBar = new Chart(ctx, {
            type: 'bar',
            data: data,
            options: options
        });
    };
</script>

现在图表如下所示: 我需要它看起来像这样:

【问题讨论】:

    标签: javascript chart.js pareto-chart


    【解决方案1】:

    这是我开发的答案(仅在选项对象中):

    var options = {
        animation: {
            onComplete: function() {
                var ctx = this.chart.ctx;
                ctx.textAlign = "center";
                ctx.textBaseline = "middle";
    
                this.chart.config.data.datasets.forEach(function(dataset) {
                    ctx.font = "20px Arial";
                    switch (dataset.type) {
                        case "line":
                            ctx.fillStyle = "Black";
                            dataset.metaData.forEach(function(p) {
                                ctx.fillText(p._chart.config.data.datasets[p._datasetIndex].data[p._index], p._model.x, p._model.y - 20);
                            });
                            break;
                        case "bar":
                            ctx.fillStyle = "White";
                            dataset.metaData.forEach(function(p) {
                                ctx.fillText(p._chart.config.data.datasets[p._datasetIndex].data[p._index], p._model.x, p._model.y  + 20);
                            });
                            break;
                    }
                });
            }
        }
    ...
    };
    

    结果如下:

    【讨论】:

      【解决方案2】:

      我认为从 2.6.0 版开始可以混合图表类型,例如条形图和线形图

      关注instructions

      一个简短的例子是2个DataSet,一个是条形,另一个是线形:

      const data = {
        labels: [
          'January',
          'February',
          'March',
          'April'
        ],
        datasets: [{
          type: 'bar',
          label: 'Bar Dataset',
          data: [10, 20, 30, 40],
          borderColor: 'rgb(255, 99, 132)',
          backgroundColor: 'rgba(255, 99, 132, 0.2)'
        }, {
          type: 'line',
          label: 'Line Dataset',
          data: [50, 50, 50, 50],
          fill: false,
          borderColor: 'rgb(54, 162, 235)'
        }]
      };
      

      您只需计算帕累托值并输入数据集线型

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-16
        • 1970-01-01
        • 2019-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多