如何在Y轴上显示设定数量的刻度?

问题描述 投票:3回答:1

我有一个图表,我已经知道我需要的设定数量的刻度。有3个带有分组条形图表。我正在摸索如何强迫它。现在它显示0到我的数据集中的任何数字,并根据需要自动缩放。

默认情况下,假设我使用数字进行缩放,但在这种情况下,它是Y轴上的正,中性,负(字面上的那些标签),它们是与X轴上特定日期相关的数据点(标有2个分组条)上午下午)。

Chart.js文档似乎没有解释如何在ticks配置上的数字之外工作时调整,我不知道如何在这里进行调整。任何想法?以下是我得到的代码。

截图示例我基本上通过选择4,8和12来模拟3个数据点。我希望这些标签是(负,正,中性)并使所有其他刻度消失。

<canvas id="myChart" width="400" height="400"></canvas>
<script>
var ctx = document.getElementById('myChart').getContext('2d');
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ['Date/MoonCenter', 'Date/MoonCenter', 'Date/MoonCenter'],
        datasets: [{
            label: 'Dataset 1', backgroundColor: window.chartColors.red,
stack: 'Stack 0',
            data: [4, 12, 4, 8, 12, 4]
        },{
            label: 'Dataset 1', backgroundColor: window.chartColors.blue,
stack: 'Stack 1',
            data: [8, 8, 12, 4, 4, 12]          
        }]
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true
                }
            }]
        }
    }
});
</script>

javascript chart.js axis-labels
1个回答
2
投票

你只需要在刻度线中添加回调,

<canvas id="myChart" width="400" height="400"></canvas>
<script src='Chart.js'></script>
<script>
    var ctx = document.getElementById('myChart').getContext('2d');
    var myChart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels: ['Date/MoonCenter', 'Date/MoonCenter', 'Date/MoonCenter'],
            datasets: [{
                label: 'Dataset 1', backgroundColor: window.chartColors.red,
                stack: 'Stack 0',
                data: [4, 12, 4, 8, 12, 4]
            }, {
                label: 'Dataset 1', backgroundColor: window.chartColors.blue,
                stack: 'Stack 1',
                data: [8, 8, 12, 4, 4, 12]
            }]
        },
        options: {
            scales: {
                yAxes: [
                    {
                        ticks: {
                            beginAtZero: true,
                            callback: function (label, index, labels) {
                                switch (label) {
                                    case 4:
                                        return 'negative';
                                    case 8:
                                        return 'positive';
                                    case 12:
                                        return 'neutral';
                                }
                            }
                        }
                    }
                ]
            }
        }
    });
</script>
© www.soinside.com 2019 - 2024. All rights reserved.