我们在代码库中使用Chart.js库,我需要创建一个直方图,这不是它们的默认图表类型之一。因此,我试图覆盖条形图上的x轴刻度线,以使其出现在每个条形的左,右角,而不是直接在其下方。
在下面的示例中,通过在labels
数组中添加额外的项并在options
中显示第二个x轴,我已经获得了所需的x轴。但是,因为现在有了一个额外的标签,所以条形图占据了宽度的4/5处,为不存在的数据点留出了空间。
是否可以指定某种方式忽略丢失的数据点?或抵消酒吧?还是我吠错了树?
documentation很难解析,所以我不确定是否缺少简单的东西。
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: [0, 1, 2, 3, 4],
datasets: [{
label: 'Group A',
data: [12, 19, 3, 5],
backgroundColor: 'rgba(255, 99, 132, 1)',
}]
},
options: {
scales: {
xAxes: [{
display: false,
barPercentage: 1.30,
}, {
display: true,
}],
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
canvas { max-width: 200px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<canvas id="myChart" width="20" height="20"></canvas>
编辑:我意识到还有其他一些库可以达到类似的目的,我正在寻找其他选择。但是,我已发布了此信息,以防万一有人通过Chart.js知道解决方案,这是理想的选择。
这是我要达到的最终结果的一个示例:
答案 0 :(得分:6)
我相信您可以通过在x轴的max
配置上使用ticks
参数来获得所需的结果。
通过使用具有不同最大值的2个不同x轴,您可以将条形标签的标记方式与绘制方式不同。导致在条之间标记标记,而没有绘制额外的“空”条。
var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: [0, 1, 2, 3, 4],
datasets: [{
label: 'Group A',
data: [12, 19, 3, 5],
backgroundColor: 'rgba(255, 99, 132, 1)',
}]
},
options: {
scales: {
xAxes: [{
display: false,
barPercentage: 1.3,
ticks: {
max: 3,
}
}, {
display: true,
ticks: {
autoSkip: false,
max: 4,
}
}],
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
canvas { max-width: 200px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<canvas id="myChart" width="20" height="20"></canvas>