如何更改悬停 Chartjs 上的图例图标
How to change legend icon on hover Chartjs
我正在尝试自定义 chartjs 图例,以便当您将鼠标悬停在图例项上时,icon/point 样式会发生变化。请参见屏幕截图 Screenshot。这可能吗?
我正在尝试使用 onHover 属性 进行不同的操作,但没有成功。
legend: {
display: true,
onHover: function (event, legendItem, legend) {
//Change Point style to icon
},
onLeave: function (e) {
//Change back to normal
}
},
是的,这是可能的,您可以更新悬停的给定数据集的 pointStyle,您可以传递 chart.js 的任何预定义 pointStyles 或文档中描述的图像(https://www.chartjs.org/docs/master/configuration/elements.html#point-styles)
示例:
var options = {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: 'red'
}]
},
options: {
plugins: {
legend: {
labels: {
usePointStyle: true
},
onHover: (evt, item, legend) => {
legend.chart.data.datasets[item.datasetIndex].pointStyle = 'rectRot'
legend.chart.update();
},
onLeave: (evt, item, legend) => {
legend.chart.data.datasets[item.datasetIndex].pointStyle = ''
legend.chart.update();
}
}
}
}
}
var ctx = document.getElementById('chartJSContainer').getContext('2d');
new Chart(ctx, options);
<body>
<canvas id="chartJSContainer" width="600" height="400"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.3.2/chart.js"></script>
</body>
我正在尝试自定义 chartjs 图例,以便当您将鼠标悬停在图例项上时,icon/point 样式会发生变化。请参见屏幕截图 Screenshot。这可能吗?
我正在尝试使用 onHover 属性 进行不同的操作,但没有成功。
legend: {
display: true,
onHover: function (event, legendItem, legend) {
//Change Point style to icon
},
onLeave: function (e) {
//Change back to normal
}
},
是的,这是可能的,您可以更新悬停的给定数据集的 pointStyle,您可以传递 chart.js 的任何预定义 pointStyles 或文档中描述的图像(https://www.chartjs.org/docs/master/configuration/elements.html#point-styles)
示例:
var options = {
type: 'bar',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
backgroundColor: 'red'
}]
},
options: {
plugins: {
legend: {
labels: {
usePointStyle: true
},
onHover: (evt, item, legend) => {
legend.chart.data.datasets[item.datasetIndex].pointStyle = 'rectRot'
legend.chart.update();
},
onLeave: (evt, item, legend) => {
legend.chart.data.datasets[item.datasetIndex].pointStyle = ''
legend.chart.update();
}
}
}
}
}
var ctx = document.getElementById('chartJSContainer').getContext('2d');
new Chart(ctx, options);
<body>
<canvas id="chartJSContainer" width="600" height="400"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.3.2/chart.js"></script>
</body>