javascript - 单击 Chartjs 条形图中的每个条形后如何启动模式以及如何获取其数据?
问题描述
所以我使用chartjs在javascript中创建图表,我有一个问题,我如何选择条形图中的每个条形图并使用其数据启动一个模式。
我已经在 options 之后尝试了 onClick 事件,但我认为我的模式错误。我对chartjs了解不多,我想我需要帮助。这是我的代码:
var ctx = document.getElementById("myChart2").getContext('2d');
var myChart = new Chart(ctx, {
type: 'horizontalBar',
data: {
labels: outlet,
datasets: [{
label: "Players",
data: total_outlet,
backgroundColor: [
"#f38b4a",
"#56d798",
"#ff8397",
"#6970d5",
"#ff0000",
"#339966",
"#004d00",
"#003366",
"#e62e00",
"#666633",
"#996633"
],
hoverBackgroundColor: [
"#f38b4a",
"#56d798",
"#ff8397",
"#6970d5",
"#ff0000",
"#339966",
"#004d00",
"#003366",
"#e62e00",
"#666633",
"#996633"
],
borderWidth: 1
}]
},
options: {
scales: {
xAxes: [{
ticks: {
min: 0,
fontColor: "white"
},
gridLines: {
display:false
}
}],
yAxes:[{
ticks: {
fontColor: "white"
},
gridLines: {
display:false
}
}]
},
title: {
display: true,
text: 'Top 10 Outlet with Active UGL Terminals',
fontColor: "white"
},
legend: {
display:false,
labels: {
fontColor: "white"
}
}
}
});
解决方案
这非常简单,并记录在 Chart.js API 页面。以下是改编自官方示例的工作片段:
let canvas = document.getElementById('canvas');
let myChart = new Chart(canvas, {
type: 'bar',
data: {
labels: ['a', 'b', 'c', 'd'],
datasets: [{
data: [0, 2, 4, 8]
}]
}
});
canvas.addEventListener('click', function(evt) {
var firstPoint = myChart.getElementAtEvent(evt)[0];
if (firstPoint) {
var label = myChart.data.labels[firstPoint._index];
var value = myChart.data.datasets[firstPoint._datasetIndex].data[firstPoint._index];
alert('Label: ' + label + "\nValue: " + value);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.bundle.min.js"></script>
<canvas id="canvas"></canvas>
推荐阅读
- javascript - 如何关闭通过单击javascript中的图像打开的新标签?
- apache-spark - spark中的智能数据源是什么?
- c# - 从字符串中获取所有唯一值
- asp.net-mvc - C# ActiveDirectory 使用“权限”获取 PrincipalContext
- apache-flink - 使用 DateStreamSource 分配水印的正确方法
- > 使用 Flink
- javascript - Angular 6 fullCalendar Display popover on mouseover 事件
- android - 错误:找不到资源样式/Base.AlertDialog.AppCompat(又名 com.example.reza.reza:style/Base.AlertDialog.AppCompat)
- java - 在 Java 中使用数组回显整数
- ios - 无法在 Swift 4.2 中请求访问 IOS 日历的权限
- html - 我的 CSS 文件的某些类没有呈现到 Django 模板中(大多数类呈现没有问题)