You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Chart JS柱状图已加载两个数据集但仅显示较大数据集的问题求助

解决Chart.js柱状图仅显示数值较大数据集的问题

嘿,我完全懂你现在的困惑!这个问题其实很好解释:你的x轴只有一个标签(Yesterday),两个数据集的柱子默认会重叠放置在同一个x轴位置上,数值大的柱子直接把小的给挡住了,所以看起来就像只显示了一个。下面给你两种针对性的解决方案,你可以根据自己的需求选:

方案1:让两个柱子并排显示

如果希望在Yesterday这个类别下,Win和Lose的柱子并排展示,你需要调整图表的宽度比例参数,同时修正代码里的小语法问题(比如hoverborderColor应该是驼峰式的hoverBorderColor,否则hover效果可能失效)。修改后的代码如下:

<script>
$(document).ready(function() {
    var bar = document.getElementById("chart-bar-11").getContext('2d');
    var data1 = {
        labels: ["Yesterday"],
        datasets: [{
            label: "Win",
            data: [{{ gam }}],
            borderColor: '#4099ff',
            backgroundColor: '#4099ff',
            hoverBorderColor:'#4099ff', // 修正驼峰命名
            hoverBackgroundColor: '#4099ff',
        }, {
            label: "Lose",
            data: [{{ results }}],
            borderColor: '#0e9e4a',
            backgroundColor: '#0e9e4a',
            hoverBorderColor:'#0e9e4a', // 修正驼峰命名
            hoverBackgroundColor: '#0e9e4a',
        }]
    };
    var myBarChart = new Chart(bar, {
        type: 'bar',
        data: data1,
        options: {
            barValueSpacing: 20,
            scales: {
                x: {
                    categoryPercentage: 0.8, // 控制整个类别(Yesterday)占x轴刻度的宽度比例
                    barPercentage: 0.4 // 控制单个柱子占类别宽度的比例,两个柱子加起来不超过categoryPercentage即可
                }
            }
        }
    });
});
</script>

简单说,categoryPercentage是整个类别在x轴上的宽度占比,barPercentage是每个柱子占类别宽度的比例。把barPercentage设为0.4,两个柱子加起来刚好匹配categoryPercentage的0.8,这样它们就能在同一个类别下并排显示而不重叠了。

方案2:让两个柱子堆叠显示

如果你希望把Win和Lose的数值堆叠在一起(比如直观展示总数,同时区分两部分的占比),只需要开启y轴的堆叠配置就行:

<script>
$(document).ready(function() {
    var bar = document.getElementById("chart-bar-11").getContext('2d');
    var data1 = {
        labels: ["Yesterday"],
        datasets: [{
            label: "Win",
            data: [{{ gam }}],
            borderColor: '#4099ff',
            backgroundColor: '#4099ff',
            hoverBorderColor:'#4099ff', // 修正驼峰命名
            hoverBackgroundColor: '#4099ff',
        }, {
            label: "Lose",
            data: [{{ results }}],
            borderColor: '#0e9e4a',
            backgroundColor: '#0e9e4a',
            hoverBorderColor:'#0e9e4a', // 修正驼峰命名
            hoverBackgroundColor: '#0e9e4a',
        }]
    };
    var myBarChart = new Chart(bar, {
        type: 'bar',
        data: data1,
        options: {
            barValueSpacing: 20,
            scales: {
                y: {
                    stacked: true // 开启y轴堆叠
                },
                x: {
                    stacked: true // 配合y轴配置,实现完整的堆叠柱状图效果
                }
            }
        }
    });
});
</script>

内容的提问来源于stack exchange,提问作者Josh

火山引擎 最新活动