2017-04-20 101 views
0

我创造了一些饼图与Plotly.js但我无法弄清楚如何设置值的格式。如果我的电话号码是19.231,我会得到19.2。我想要19.2310,精度为4位数。我的数据和布局遵循在这里:Plotly.js饼图值格式

var data = [{ 
    values: values, 
    labels: labels, 
    type: 'pie', 
    marker: { 
     colors: colors 
    }, 
    textfont: { 
     family: 'Helvetica, sans-serif', 
     size: 48, 
     color: '#000' 
    } 
}]; 
var layout = { 
    height: 1350, 
    width: 1500, 
    title: title, 
    titlefont: { 
     family: 'Helvetica, sans-serif', 
     size: 58, 
     color: '#000' 
    }, 
    legend: { 
     x: 1.1, 
     y: 0.5, 
     size: 40, 
     font: { 
      family: 'Helvetica, sans-serif', 
      size: 48, 
      color: '#000' 
     } 
    } 
}; 
+0

你可以添加一些你的价值观有一个最小的,可核查的例子吗? –

+0

它们根据用户输入在流程上生成。值为浮点数,在逗号后自动将它们四舍五入为一位数字。 – ppablo

+1

如果你尝试'var values = [1,2,4.6];'你得到13.2%,26.3%和60.5%而不是13.1579%,26.3158%和60.5263% – ppablo

回答

1

据我知道你不能在Plotly直接做到这一点,但你可以用你想要的精确度增加text值,并设置textinfotext

var values = [Math.random(), Math.random(), Math.random()]; 
 
var sum = values.reduce(function(pv, cv) { return pv + cv; }, 0); 
 
var digits = 4; 
 
var rounded_values = []; 
 

 
for (var i = 0; i < values.length; i += 1) { 
 
\t rounded_values.push(Math.round(values[i]/sum * 100 * 10**digits)/10**digits + '%'); 
 
} 
 

 
var myPlot = document.getElementById('myPlot'); 
 
var data = [{ 
 
    values: values, 
 
    type: 'pie', 
 
    text: rounded_values, 
 
\t textinfo: 'text' 
 
}]; 
 
Plotly.plot(myPlot, data);
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script> 
 
<div id="myPlot"></div>

+0

谢谢,这正是我正在关注的。 – ppablo