jak*_*lar 2 javascript chart.js
我在带有chart.js的网页上显示一个甜甜圈图,甜甜圈中心有一些文本。问题在于在同一页面上添加多个甜甜圈图表时。中心文本在所有图表上重叠。
结果看起来像这个带有重叠文本的甜甜圈图
这是一个小提琴:https : //jsfiddle.net/jaklar/ng1y18yo/1/
HTML代码:
`
<table>
<tr>
<td><canvas id="myChart1" width="150" height="150"></canvas></td>
<td><canvas id="myChart2" width="150" height="150"></canvas></td>
</tr>
<table>
Run Code Online (Sandbox Code Playgroud)
`
javascript
'
var data = {
labels: [
"Red",
"Blue"
],
datasets: [
{
data: [100, 100],
backgroundColor: [
"#FF6384",
"#36A2EB"
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB"
]
}]
};
var promisedDeliveryChart = new Chart(document.getElementById('myChart1'), {
type: 'doughnut',
data: data,
options: {
responsive: true,
cutoutPercentage: 75,
legend: {
display: false
}
}
});
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height / 114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = "100%",
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
var data = {
labels: [
"Red",
"Blue"
],
datasets: [
{
data: [300, 0],
backgroundColor: [
"#FF6384",
"#36A2EB"
],
hoverBackgroundColor: [
"#FF6384",
"#36A2EB"
]
}]
};
var promisedDeliveryChart = new Chart(document.getElementById('myChart2'), {
type: 'doughnut',
data: data,
options: {
responsive: true,
cutoutPercentage: 75,
legend: {
display: false
}
}
});
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height / 114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = "9%",
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
Run Code Online (Sandbox Code Playgroud)
'
无需为不同的图表注册单独的插件。这可以通过为两个图表注册一个插件来实现。
此外,您的图表插件也有一些缺陷。这是插件的更正版本...
Chart.pluginService.register({
beforeDraw: function (chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height / 114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = chart.config.options.elements.center.text,
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
Run Code Online (Sandbox Code Playgroud)
您还需要为两个图表设置以下选项......
elements: {
center: {
text: '50%' //set as you wish
}
}
Run Code Online (Sandbox Code Playgroud)
???
Chart.pluginService.register({
beforeDraw: function (chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height / 114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = chart.config.options.elements.center.text,
textX = Math.round((width - ctx.measureText(text).width) / 2),
textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
Run Code Online (Sandbox Code Playgroud)
elements: {
center: {
text: '50%' //set as you wish
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5614 次 |
| 最近记录: |