jquery - 如何为 ChartJs 图例添加标签
解决方案
您可以使用 html 创建自定义图例。这是一个如何使用自定义标题(和自定义用户界面)创建自定义图例的示例。
function legendClickCallback(event) {
event = event || window.event;
var target = event.target || event.srcElement;
while (target.nodeName !== 'LI') {
target = target.parentElement;
}
var parent = target.parentElement;
var chartId = parseInt(parent.classList[0].split("-")[0], 10);
var chart = Chart.instances[chartId];
var index = Array.prototype.slice.call(parent.children).indexOf(target);
var meta = chart.getDatasetMeta(index);
if (meta.hidden === null) {
meta.hidden = !chart.data.datasets[index].hidden;
target.classList.add('hidden');
} else {
target.classList.remove('hidden');
meta.hidden = null;
}
chart.update();
}
var ctx = document.getElementById("myChart");
var myLegendContainer = document.getElementById("myChartLegend");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: ["values #1", "values #2"],
datasets: [
{
label: "One",
backgroundColor: "red",
data: [26,36]
},
{
label: "Two",
backgroundColor: "blue",
data: [34, 40]
}
]
},
options: {
legend: {
display: false
},
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
}
}
});
myLegendContainer.innerHTML = myChart.generateLegend();
var legendItems = myLegendContainer.getElementsByTagName('li');
for (var i = 0; i < legendItems.length; i += 1) {
legendItems[i].addEventListener("click", legendClickCallback, false);
}
.myChartDiv {
max-width: 600px;
max-height: 400px;
}
[class="0-legend"] {
cursor: pointer;
list-style: none;
padding-left: 0;
}
[class="0-legend"] li {
display: inline-block;
padding: 0 5px;
}
[class="0-legend"] li.hidden {
text-decoration: line-through;
}
[class="0-legend"] li span {
border-radius: 5px;
display: inline-block;
height: 10px;
margin-right: 10px;
width: 10px;
}
.legend-box{
border-color: gray;
border-style: dashed;
margin-top: 25px;
}
<script src="https://npmcdn.com/chart.js@latest/dist/Chart.bundle.min.js"></script>
<html>
<body>
<div class="myChartDiv">
<canvas id="myChart" width="600" height="400"></canvas>
<div class='legend-box'>
<span>Chart legend</span>
<div id="myChartLegend"></div>
</div>
</div>
</body>
</html>
我使用这个例子的代码来创建上面的例子
推荐阅读
- android - 尝试在 Android Studio 的帮助下在我的 android 手机上运行颤振应用程序,但安装后:“与设备的连接丢失”?
- apache-beam - 在 FlinkRunner 上作为守护进程运行 unbounded&streaming python 作业
- powershell - msiexec.exe - 嵌入
- r - 非线性最小二乘会导致 X 值较少的误差?
- c# - 使用 C# 从 SQL Server 数据库显示 PDF
- python-3.x - 令人困惑的缩进问题
- javascript - 将 innerHTML 设置为 Vue Compent
- atmosphere - Atmosphere 运行时和 javascript 版本兼容性
- mongodb - MongoDB Community Kubernetes Operator 和自定义持久卷
- azure - 使用 REST API 检索 Azure 更新管理状态