我正在使用chartjs创建气泡图。我能够创建描述每个气泡的工具提示,但我的图表的用户可能无法将鼠标悬停在其上以查看工具提示。 BubbleData对象格式不包含标签元素(无论如何我都放了一个 - 没有运气),我已经尝试了#34;标签"图表数据对象的元素(即使文档说这是针对类别标签 - 你永远不知道!),以及我能想到的所有标签都放在泡沫上。
是否有工具提示配置使所有工具提示始终可见?这对我也有用。
感谢;
格伦
答案 0 :(得分:1)
我一直在寻找相同的东西,并想出如何做到这一点。
在数据集中添加标题:“dataTitle3”。
使用数据标签插件。
http://www.chartjs.org/samples/latest/advanced/data-labelling.html
简单的代码操作实现了您想要的使用 “dataset.title” 我已经做了一个样本,但我想你可以找到答案 如果你玩的话,如何表示你想要的数据 https://jsfiddle.net/dovvas/s4zwzp3w/
HTML:
<canvas id="bubble-chart" width="800" height="800"></canvas>
JAVASCRIPT:
new Chart(document.getElementById("bubble-chart"), {
type: 'bubble',
data: {
labels: "Africa",
datasets: [{
label: ["China"],
backgroundColor: "rgba(255,221,50,0.2)",
borderColor: "rgba(255,221,50,1)",
title: "dataTitle1",//adding the title you want to show
data: [{
x: 21269017,
y: 5.245,
r: 15
}]
}, {
label: ["Denmark"],
backgroundColor: "rgba(60,186,159,0.2)",
borderColor: "rgba(60,186,159,1)",
title: "dataTitle2",
data: [{
x: 258702,
y: 7.526,
r: 10
}]
}, {
label: ["Germany"],
backgroundColor: "rgba(0,0,0,0.2)",
borderColor: "#000",
title: "dataTitle3",//adding the title you want to show
data: [{
x: 3979083,
y: 6.994,
r: 15
}]
}, {
label: ["Japan"],
backgroundColor: "rgba(193,46,12,0.2)",
borderColor: "rgba(193,46,12,1)",
title: "dataTitle4",//adding the title you want to show
data: [{
x: 4931877,
y: 5.921,
r: 15
}]
}]
},
options: {
title: {
display: true,
text: 'Predicted world population (millions) in 2050'
},
scales: {
yAxes: [{
scaleLabel: {
display: true,
labelString: "Happiness"
}
}],
xAxes: [{
scaleLabel: {
display: true,
labelString: "GDP (PPP)"
}
}]
}
}
});
Chart.plugins.register({
afterDatasetsDraw: function(chart, easing) {
var ctx = chart.ctx;
chart.data.datasets.forEach(function(dataset, i) {
var meta = chart.getDatasetMeta(i);
if (meta.type == "bubble") { //exclude scatter
meta.data.forEach(function(element, index) {
// Draw the text in black, with the specified font
ctx.fillStyle = 'rgb(0, 0, 0)';
var fontSize = 13;
var fontStyle = 'normal';
var fontFamily = 'Helvetica Neue';
ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily);
// Just naively convert to string for now
var dataString = dataset.data[index].toString();
// Make sure alignment settings are correct
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
var padding = 15;
var position = element.tooltipPosition();
ctx.fillText(dataset.title, position.x, position.y - (fontSize / 2) - padding);
});
} //if
});
}
});
答案 1 :(得分:0)
ChartJs现在有一个插件。
https://github.com/chartjs/chartjs-plugin-datalabels
只需使用nuget或bower安装它并添加它的引用。它会自动将z设置为标签