javascript - Chartjs 3.x - 如何在只有 1 个数据集的水平条形图两侧复制 X 轴?
问题描述
我正在尝试在图表的两侧(底部和顶部)复制 X 轴刻度。
我看到过这个问题的较早问题,但这是在 chartjs 2.x 期间 - 从那时起他们已经更改了选项的比例部分。你曾经能够做类似的事情:
xAxes: [
{
position: 'top',
},
{
position: 'bottom',
}
]
但在 Chartjs 3.x 中,您无法为 xAxes 提供数组。您现在需要向数据集添加一个 ID,然后在比例选项中引用该 ID。但是当一个说位置:顶部和另一个位置:底部时,我无法在 2 个比例对象中引用 1 个数据集。它只会使用最后一个缩放对象。
所以我的问题是,使用一个数据集。我怎样才能让 X 轴位于图表的底部和水平条形图的顶部?这样,如果图表很大,我不必总是向下滚动来查看值是多少。
编辑:根据反馈,我现在有以下结果,这更接近我正在寻找的结果,但顶部的刻度线发生了什么。为什么他们不匹配底部的数字?
new Chart('myChart', {
type: 'line',
data: {
labels: ['A', 'B', 'C', 'D', 'E', 'F'],
datasets: [{
data: [1, 3, 6, 2, 8, 9],
borderColor: '#00D',
}]
},
options: {
indexAxis: "y",
scales: {
x: {
},
x1: {
position: 'top'
}
}
}
});
canvas {
max-height: 180px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.min.js"></script>
<canvas id="myChart"></canvas>
解决方案
如果您希望在ticks
图表顶部看到相同的内容,只需定义第二个 x 轴,如下所示:
x1: {
position: 'top'
}
请看下面的可运行代码,看看它是如何工作的:
new Chart('myChart', {
type: 'line',
data: {
labels: ['A', 'B', 'C', 'D', 'E', 'F'],
datasets: [{
data: [1, 3, 6, 2, 8, 9],
borderColor: '#00D',
}]
},
options: {
scales: {
x: {
},
x1: {
position: 'top'
}
}
}
});
canvas {
max-height: 180px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.min.js"></script>
<canvas id="myChart"></canvas>
推荐阅读
- reactjs - 在反应中,axios 系统地返回 404 错误
- php - 使用 api 创建 adwords campign 时出错
- html - 将特定主机重定向到子目录而不影响使用 .htaccess 的不同主机
- android - 特定于我的代码的 Java 到 kotlin 的转换
- java - Wiremock 请求匹配两个查询参数之间的比较
- python - 基于结构化数组查询 Numpy 结构化数组
- xamarin.forms - UWP 上的 Xamarin Forms Map 引发异常
- android - AWS AppSync:在应用程序关闭或没有 Internet 连接后跨设备同步数据
- sql - SQL 总计 pr 组
- javascript - Webpack 创建两个没有入口点的包