首页  >  问答  >  正文

如何使用图表JS在垂直条形图中设置y轴值

<p>在此垂直条形图中,y 轴有正值、负值。</p> <p>我想根据零值上下使用正整数。</p> <p>我使用的是4.2.1版本</p> <p>我该怎么办?</p> <p>垂直图表示例</p> <pre class="brush:php;toolbar:false;">var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ]; var color = Chart.helpers.color; var barChartData = { labels: ["January", "February", "March", "April", "May", "June", "July"], datasets: [ { label: "Dataset 1", backgroundColor: 'rgba(255, 201, 14, 1)', borderColor: 'rgba(255, 201, 14, 1)', borderWidth: 1, data: [ 10, 20, 30, 40, 50 ], }, { label: "Dataset 2", backgroundColor: 'rgba(255, 201, 14, 1)', borderColor: 'rgba(255, 201, 14, 1)', borderWidth: 1, data: [ -100, -200, -300, -400, -500 ], }, ], }; var ctx = bloodPressureChart; new Chart(ctx, { type: "bar", data: barChartData, options: { responsive: true, legend: { position: "top", }, title: { display: true, text: "Chart.js Bar Chart", }, }, });</pre> <p>这是我使用图表 JS 的代码。</p> <p>我的代码图表</p>
P粉729436537P粉729436537440 天前579

全部回复(1)我来回复

  • P粉316110779

    P粉3161107792023-08-30 00:43:35

    如果您只想更改 y 轴标签的文本,可以通过设置函数 options.scales.y.ticks.callback 来完全更改它们,请参阅文档API 参考了解详细信息。在您的情况下,要使负值读为正值,您可以使用:

    callback: function(val){
        return this.getLabelForValue(Math.abs(val));
    }

    callback: function(val){
        return this.getLabelForValue(val).replace(/^-/, '');
    }

    var ctx = document.getElementById('chart1');
    var MONTHS = [
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December",
    ];
    
    var barChartData = {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [
            {
                label: "Dataset 1",
                backgroundColor: 'rgba(255, 201, 14, 1)',
                borderColor: 'rgba(255, 201, 14, 1)',
                borderWidth: 1,
                data: [
                    10,
                    20,
                    30,
                    40,
                    50
                ],
            },
            {
                label: "Dataset 2",
                backgroundColor: 'rgba(255, 201, 14, 1)',
                borderColor: 'rgba(255, 201, 14, 1)',
                borderWidth: 1,
                data: [
                    -100,
                    -200,
                    -300,
                    -400,
                    -500
                ],
            },
        ],
    };
    
    new Chart(ctx, {
        type: "bar",
        data: barChartData,
        options: {
            responsive: true,
            legend: {
                position: "top",
            },
            title: {
                display: true,
                text: "Chart.js Bar Chart",
            },
            scales:{
                y: {
                    ticks: {
                        callback: function(val){
                            return this.getLabelForValue(Math.abs(val));
                            // or: //return this.getLabelForValue(val).replace(/^-/, '');
                        },
                    }
                }
            },
        },
    });
    <canvas id="chart1" style="height:500px"></canvas>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.1.2/chart.umd.js"
            integrity="sha512-t41WshQCxr9T3SWH3DBZoDnAT9gfVLtQS+NKO60fdAwScoB37rXtdxT/oKe986G0BFnP4mtGzXxuYpHrMoMJLA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

    回复
    0
  • 取消回复