Ami*_*ghe 2 javascript pie-chart chart.js
我有一个场景,我需要在饼图中显示切片内部的切片值。我的网页上有超过 1 个饼图。下面的代码工作正常,但仅适用于第一个饼图,而对于其他饼图,其抛出错误如下,您能帮我解决这个问题吗?
错误:: unCaught TypeError: 无法读取未定义的属性“数据”。
Code::
options:{
animation:{
onComplete:function(){
var ctx = this.chart.ctx;
var dataset_obj = this.data.datasets;
for (var i=0;i<dataset_obj.length; i++){
var meta_obj = dataset_obj[i]._meta[i].data;
for (var j=0; j<meta_obj.length; j++){
var model =meta_obj[j]._model;
start_angle= model.startAngle;
end_angle = model.endAngle;
mid_angle =start_angle + ( end_angle -start_angle)/2;
mid_radius = model.innerRadius + (model.outerRadius -model.innerRadius)/2;
var x =mid_radius*math.cos(mid_angle);
var y = mid_radius*math.cos(mid_angle);
ctx.fillstyle='#fff';
if (dataset_obj[i].data[j] != 0 && meta_obj[j].hidden != true){
ctx.fillText(dataset_obj[i].data[j], model.x+x, model.y+y);
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这回答了问题标题中包含的问题:
如何使用 Chart.js 在饼图中显示切片内部的切片值
下面的代码片段展示了如何使用 来显示切片内的值chartjs-plugin-labels。示例的代码是从chartjs-plugin-labels 演示页面中提取的。
var canvas = document.getElementById('myChart');
new Chart(canvas, {
type: 'pie',
data: {
labels: ['January', 'February', 'March'],
datasets: [{
data: [50445, 33655, 15900],
backgroundColor: ['#FF6384', '#36A2EB','#FFCE56']
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
plugins: {
labels: {
render: 'value',
fontColor: ['green', 'white', 'red']
}
}
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/emn178/chartjs-plugin-labels/src/chartjs-plugin-labels.js"></script>
<canvas id="myChart"></canvas>Run Code Online (Sandbox Code Playgroud)
如果要显示每个切片的百分比,可以执行以下操作:
var canvas = document.getElementById('myChart');
new Chart(canvas, {
type: 'pie',
data: {
labels: ['January', 'February', 'March'],
datasets: [{
data: [50445, 33655, 15900],
backgroundColor: ['#FF6384', '#36A2EB','#FFCE56']
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
plugins: {
labels: {
render: 'percentage',
fontColor: ['green', 'white', 'red'],
precision: 2
}
},
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/emn178/chartjs-plugin-labels/src/chartjs-plugin-labels.js"></script>
<canvas id="myChart"></canvas>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7162 次 |
| 最近记录: |