Javascript 谷歌饼图:2个小数百分比的舍入问题
我面临谷歌图表的问题。我想要一个饼图,显示带有标记图例的所有值,包括小于0.1%的非常小的值 假设我有以下数据:Javascript 谷歌饼图:2个小数百分比的舍入问题,javascript,charts,google-visualization,pie-chart,Javascript,Charts,Google Visualization,Pie Chart,我面临谷歌图表的问题。我想要一个饼图,显示带有标记图例的所有值,包括小于0.1%的非常小的值 假设我有以下数据: var data = google.visualization.arrayToDataTable([ ['Task', 'Hours per Day'], ['Work', 66], ['Sleep', 33.95], ['Eat', 0.05] ]); (总匹配数不超过100) 现在的问题是,在计算百分
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
['Work', 66],
['Sleep', 33.95],
['Eat', 0.05]
]);
(总匹配数不超过100)
现在的问题是,在计算百分比时,谷歌图表将数值四舍五入,导致33.95变为34,因此0.05变为0
示例如下:
有没有办法让图表引擎创建2位小数而不是1位小数的百分比?因为没有选项更改百分比的格式或精度 首先,需要设置
sliceVisibilityThreshold:0.0001
因此,'Eat'
不属于'Other'
接下来,在数据中提供自定义格式的值{v:66,f:'66.00%}
将text
和tooltip.text
设置为“值”
由于'Eat'
的切片非常小,因此使用tooltip.trigger:“选择”
请参见下面的示例,切片显示正确的百分比
单击“Eat”的图例项查看工具提示
google.charts.load('current'{
回调:函数(){
新的google.visualization.PieChart(document.getElementById('chart\u div')).draw(
google.visualization.arrayToDataTable([
[“任务”,“每天工作小时数”],
[“工作”{v:66,f:'66.00%},
['Sleep',{v:33.95,f:'33.95%}],
['Eat',{v:0.05,f:'0.05%}]
]),
{
身高:400,
图例:{
位置:'右'
},
文本:“值”,
切片可见性阈值:0.0001,
标题:“我的日常活动”,
工具提示:{
showColorCode:true,
文本:“值”,
触发器:“选择”
},
宽度:600
}
);
},
包:['corechart','table']
});代码>
我仍然需要在悬停时显示工具提示,而不仅仅是在单击时,所以我使用处理事件API找到了解决方案:。这里有一点改进,适用于切片和图例悬停:
function mouseOverHandler(selection) {
chart.setSelection([selection]);
}
function mouseOutHandler() {
chart.setSelection();
}
google.visualization.events
.addListener(chart, 'onmouseover', mouseOverHandler);
google.visualization.events
.addListener(chart, 'onmouseout', mouseOutHandler);
下面是一个完整的工作示例(基于@WhiteHat的代码片段):
google.charts.load('current'{
回调:函数(){
var chart=new google.visualization.PieChart(document.getElementById('chart_div');
图表绘制(
google.visualization.arrayToDataTable([
[“任务”,“每天工作小时数”],
[“工作”{v:66,f:'66.00%},
['Sleep',{v:33.95,f:'33.95%}],
['Eat',{v:0.05,f:'0.05%}]
]),
{
身高:400,
图例:{
位置:'右'
},
文本:“值”,
切片可见性阈值:0.0001,
标题:“我的日常活动”,
工具提示:{
showColorCode:true,
文本:“值”,
触发器:“选择”
},
宽度:600
}
);
函数mouseOverHandler(选择){
图.选举([选择]);
}
函数mouseOutHandler(){
chart.setSelection();
}
google.visualization.events
.addListener(图表'onmouseover',mouseOverHandler);
google.visualization.events
.addListener(图表“onmouseout”,mouseOutHandler);
},
包:['corechart','table']
});代码>
#图表分区svg g:last child>g:last child{
指针事件:无;
}
非常有魅力!这正是我需要的。因此,基本上是提供预定义格式值的技巧。