Javascript 谷歌饼图:2个小数百分比的舍入问题

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) 现在的问题是,在计算百分

我面临谷歌图表的问题。我想要一个饼图,显示带有标记图例的所有值,包括小于0.1%的非常小的值

假设我有以下数据:

    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{
指针事件:无;
}

非常有魅力!这正是我需要的。因此,基本上是提供预定义格式值的技巧。