Javascript 如何使用图表js的内联插件内部标题?
我正在创建一个包含两个甜甜圈图表的JavaScript网页。为了创建图表,我使用一个函数,并使用每个图表的不同数据调用它两次。然而,当我这样做时,炸圈饼图中间的文字被改变了,这两张图表不仅仅是当前的图表。我如何分别为每个人写课文? 这是我的密码Javascript 如何使用图表js的内联插件内部标题?,javascript,plugins,chart.js,frontend,donut-chart,Javascript,Plugins,Chart.js,Frontend,Donut Chart,我正在创建一个包含两个甜甜圈图表的JavaScript网页。为了创建图表,我使用一个函数,并使用每个图表的不同数据调用它两次。然而,当我这样做时,炸圈饼图中间的文字被改变了,这两张图表不仅仅是当前的图表。我如何分别为每个人写课文? 这是我的密码 function chart(dummynames, dummyValues, dummyColors, percentage, id) { //dummy names, dummy values and dummy colors are array
function chart(dummynames, dummyValues, dummyColors, percentage, id) {
//dummy names, dummy values and dummy colors are arrays
new Chart(document.getElementById(id), {
type: 'doughnut',
data: {
labels: dummynames,
datasets: [{
label: "tessers",
backgroundColor: dummyColors,
data: dummyValues,
}]
},
options: {
title: {
display: true,
align: 'center',
horizontalAlign: "center",
verticalAlign: "bottom",
dockInsidePlotArea: true
},
legend: {
display: false
},
cutoutPercentage: 70,
},
});
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height + 35,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height / 200).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = percentage,
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
})
}
您应该将
Chart.pluginService.register
放在Chart
函数之外,从而确保只调用一次
请看一下你修改过的代码,看看它是如何工作的
Chart.pluginService.register({
绘制前:函数(图表){
变量宽度=chart.chart.width,
高度=chart.chart.height+35,
ctx=chart.chart.ctx;
ctx.save();
变量fontSize=(高度/200).toFixed(2);
ctx.font=fontSize+“em无衬线”;
ctx.textb基线=“中间”;
var text=chart.data.datasets[0]。百分比,
textX=数学圆((宽度-ctx.measureText(text.width)/2),
textY=高度/2;
ctx.fillText(text,textX,textY);
ctx.restore();
}
});
功能图(DummyName、DummyValue、DummyColor、百分比、id){
新图表(document.getElementById(id){
键入:“甜甜圈”,
数据:{
标签:dummynames,
数据集:[{
标签:“tessers”,
背景颜色:dummyColors,
数据:dummyValues,
百分比:百分比
}]
},
选项:{
标题:{
显示:对,
对齐:'居中',
水平对齐:“中心”,
垂直排列:“底部”,
dockInsidePlotArea:真
},
图例:{
显示:假
},
门诊量:70,
},
});
}
图表(['A'、'B']、[5,6]、'red'、'blue']、'26.846%'、'myChart1');
图表(['X','Y'],[7,5],'green','purple'],'19.451%,'myChart2')代码>