我有一个带有四个标签的图表:
var data = [{
data: [50, 55, 60, 33],
labels: ["India", "China", "US", "Canada"],
backgroundColor: [
"#4b77a9",
"#5f255f",
"#d21243",
"#B27200"
],
borderColor: "#fff"
}];
使用chartjs插件datalabels
plugin,我想用以下代码显示每个饼图中的百分比值:
formatter: (value, ctx) => {
let datasets = ctx.chart.data.datasets;
if (datasets.indexOf(ctx.dataset) === datasets.length - 1) {
let sum = 0;
datasets.map(dataset => {
sum += dataset.data[ctx.dataIndex];
});
let percentage = Math.round((value / sum) * 100) + '%';
return percentage;
} else {
return percentage;
}
},
color: '#fff',
}
我得到的是所有饼片的100%价值,而不是各自的百分比。这是JSFIDLE(https://jsfiddle.net/kingBethal/a1Lvn4eb/7/)
问题是如何计算总和。见下文。
不停摆弄
var data = [{
data: [50, 55, 60, 33],
labels: ["India", "China", "US", "Canada"],
backgroundColor: [
"#4b77a9",
"#5f255f",
"#d21243",
"#B27200"
],
borderColor: "#fff"
}];
var options = {
tooltips: {
enabled: false
},
plugins: {
datalabels: {
formatter: (value, ctx) => {
let datasets = ctx.chart.data.datasets;
if (datasets.indexOf(ctx.dataset) === datasets.length - 1) {
let sum = datasets[0].data.reduce((a, b) => a + b, 0);
let percentage = Math.round((value / sum) * 100) + '%';
return percentage;
} else {
return percentage;
}
},
color: '#fff',
}
}
};
var ctx = document.getElementById("pie-chart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'pie',
data: {
datasets: data
},
options: options
});
我想在公认的答案中添加一点,ctx.chart.data.datasets[0]。即使您通过单击图例过滤掉一些数据,data
也始终会为您提供完整的数据,这意味着即使您过滤掉一些国家,您也会得到相同的百分比。
我使用了context.dataset._meta[0]。总计
来获取过滤后的总数。
以下是工作片段:
var data = [{
data: [50, 55, 60, 33],
backgroundColor: [
"#4b77a9",
"#5f255f",
"#d21243",
"#B27200"
],
borderColor: "#fff"
}];
var options = {
tooltips: {
enabled: true
},
plugins: {
datalabels: {
formatter: (value, ctx) => {
let sum = ctx.dataset._meta[0].total;
let percentage = (value * 100 / sum).toFixed(2) + "%";
return percentage;
},
color: '#fff',
}
}
};
var ctx = document.getElementById("pie-chart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'pie',
data: {
labels: ['India', 'China', 'US', 'Canada'],
datasets: data
},
options: options
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@0.7.0"></script>
<canvas id="pie-chart"></canvas>
更新的小提琴精度为2位小数。
您没有计算总和,而是仅为每个值将当前值存储在总和中。
这是工作小提琴:https://jsfiddle.net/a1Lvn4eb/55/
var data = [{
data: [50, 55, 60, 33],
labels: ["India", "China", "US", "Canada"],
backgroundColor: [
"#4b77a9",
"#5f255f",
"#d21243",
"#B27200"
],
borderColor: "#fff"
}];
var options = {
tooltips: {
enabled: false
},
plugins: {
datalabels: {
formatter: (value, ctx) => {
let sum = 0;
let dataArr = ctx.chart.data.datasets[0].data;
dataArr.map(data => {
sum += data;
});
let percentage = (value*100 / sum).toFixed(2)+"%";
return percentage;
},
color: '#fff',
}
}
};
var ctx = document.getElementById("pie-chart").getContext('2d');
var myChart = new Chart(ctx, {
type: 'pie',
data: {
datasets: data
},
options: options
});
问题内容: 以下是熊猫数据框和从中生成的条形图: 我需要在相应栏上方显示相应主题的每个兴趣类别的百分比。我可以创建带有百分比的列表,但是我不知道如何将其添加到相应栏的顶部。 问题答案: 尝试将以下循环添加到您的代码中: 说明 通常,您可以在图上添加注释。 此方法采用注释的值和放置注释的坐标。 在一个barplot,每个“条”是由a表示,并且每个这些矩形的具有属性,和矩形的左下角的COORDS,所有
本文向大家介绍DevExpress之ChartControl实现饼状图百分比演示实例,包括了DevExpress之ChartControl实现饼状图百分比演示实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了DevExpress中ChartControl实现饼状图百分比演示的方法。分享给大家供大家参考。具体实现方法如下: 关键代码如下: 运行效果如下图所示: 希望本文所述对大家的C#程序
Highcharts 饼图 以下实例演示了显示图例饼图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 series 配置 设置 series 的 type 属性为 pie ,series.type 描述了数据列类型。默认值为 "line"。 var series = { type: 'pie' }; plotOptions plo
我最近更新了我的charts.js库到最新版本(2.5.0)。这个版本不显示图表上的标签。 我有一个在《小提琴手:http://jsfiddle.net/g6fajwg8》上工作的例子。 但是,我完全按照示例中的方式定义了我的图表,但仍然看不到图表上的标签。 注意:在Google和Stackoverflow上有很多这样的问题,但其中大多数都是关于以前的版本,这些版本在它们上运行良好。
我正在使用Jaspersoft Studio和JasperReports Server,都在v.5.6.0中。 我想创建一个饼图,以红色显示错误的百分比。 示例: $V{til_1}=总计 $V{state_1}=错误 总计:2-错误:1= 实际结果(包括问题): 但是,当我运行报告时,“红色”接缝的计算是正确的,图表输出图像没有-链接到下面附加的图像。 (50%红色而不是100%,33,3%红色
我使用Jasper Report 5.2,我想生成PieChart并显示带有2个小数的百分比。 我用一个piechart创建了jrxml,数据源中填充了参数piechart类型列表。 jrxml是: 使用此代码,百分比以一个整数显示。我要带两个小数的百分比。这可能吗?