我目前正在尝试使用chart-js和momentum重新创建一个机器时间轴。当前状态看起来已经与原始状态相似,但有一些点没有按预期工作。
- 工具提示只显示在最后一个栏上(在右边)
- 图例显示了3种状态,但每种状态仅显示一次
工作示例https://codepen.io/tulipuser/pen/PoXmRQR
预期结果:
如图所示,每个状态都应该可见一次。每个工具提示都应该有效,而不仅仅是最后一个。
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ['Status'],
datasets: [{label:'RUNNING',borderWidth:1,backgroundColor:'rgba(101,172,91,1)',data:[{x:'2023-09-01T08:56:26.000Z',y:0}]},
{label:'IDLE',borderWidth:1,backgroundColor:'rgba(233,157,82,1)',data:[{x:'2023-09-01T09:39:12.000Z',y:1}]},
{label:'RUNNING',borderWidth:1,backgroundColor:'rgba(101,172,91,1)',data:[{x:'2023-09-01T09:42:44.000Z',y:2}]},
{label:'STOPPED',borderWidth:1,backgroundColor:'rgba(212,29,29,1)',data:[{x:'2023-09-01T10:00:11.000Z',y:3}]},
{label:'RUNNING',borderWidth:1,backgroundColor:'rgba(101,172,91,1)',data:[{x:'2023-09-01T12:30:00.000Z',y:4}]},
{label:'IDLE',borderWidth:1,backgroundColor:'rgba(233,157,82,1)',data:[{x:'2023-09-01T12:55:23.000Z',y:5}]},
{label:'RUNNING',borderWidth:1,backgroundColor:'rgba(101,172,91,1)',data:[{x:'2023-09-01T19:00:12.000Z',y:6}]},
{label:'IDLE',borderWidth:1,backgroundColor:'rgba(233,157,82,1)',data:[{x:'2023-09-01T21:12:45.000Z',y:7}]},
{label:'RUNNING',borderWidth:1,backgroundColor:'rgba(101,172,91,1)',data:[{x:'2023-09-02T02:12:12.000Z',y:8}]}],
},
options: {
responsive: true,
scales: {
x: {
stacked: false,
min: '2023-09-01T08:56:26.000Z',
//OP "min: moment().startOf('day').subtract(11, 'day')" worked only on the first day
type: 'time',
time: {
unit: 'minute',
displayFormats: {
hour: 'H:mm'
},
}
},
y: {
stacked: true
}
},
indexAxis: 'y',
}
});
.myChartDiv {
max-width: 600px;
max-height: 400px;
}
<script src="https://npmcdn.com/chart.js@latest/dist/chart.umd.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.0/chart.min.js" type="module"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chartjs-adapter-moment/1.0.1/chartjs-adapter-moment.min.js"></script>
<div class="myChartDiv">
<canvas id="myChart" width="600" height="400"></canvas>
</div>
1条答案
按热度按时间1tu0hz3e1#
将
interaction.mode: 'dataset'
添加到options
,如下所示,它将工作。有关详细信息,请参阅
Chart.js
文档中的交互一章。通过如下所示定义
options.plugins.tooltip.mode: 'dataset'
可以获得相同的结果(参见Tooltip)。