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




