我们使用 Chart.js我们代码库中的库,我需要创建一个直方图,这不是他们的默认图表类型之一。因此,我试图覆盖条形图上的 x 轴刻度线,使它们出现在每个条形图的左右 Angular ,而不是直接在下方。
在下面的示例中,我通过在 labels
中添加一个额外的项目来获得我想要的 x 轴。数组并在 options
中显示第二个 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 的解决方案,这将是理想的。
这是我想要的最终结果的示例:
最佳答案
我相信您可以通过在 x 轴的 ticks
配置上使用 max
参数来获得您想要的结果。
通过使用具有不同最大值的 2 个不同的 x 轴,您可以以不同于它们绘制方式的方式标记条形。导致在条形之间标记标记,而无需绘制额外的“空”条。
var ctx = document.getElementById("myChart").getContext('2d');
var dataValues = [12, 19, 3, 5];
var dataLabels = [0, 1, 2, 3, 4];
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: dataLabels,
datasets: [{
label: 'Group A',
data: dataValues,
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>
关于javascript - 在 Chart.js 中制作直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51880101/