我已经成为谷歌sankey排行榜的忠实粉丝,但有一件事困扰着我 - 我无法弄清楚如何进行数字格式化,以便相关单位显示第三个数据表列中的数字。我尝试了几种方法 - 尝试使用格式化程序设置'模式'选项,但是对于我的生活似乎没有任何工作 - 请参阅此JSFiddle示例:http://jsfiddle.net/nickdunbar/t9e3dcy3/1/
sankey: {
iterations: 64,
node: {
pattern: '$### m', nodePadding: 30, interactivity: true, label: { fontName: 'Times-Roman',
fontSize: 14,
color: '#871b47',
bold: false,
italic: true }
},
link: {
pattern: '$###.## bn'
},
对于其他Google图表类型,数字格式的运行非常顺利,我无法相信某处没有可用的选项。它不在Google文档中。我看过D3的文献,但也没有明显的东西出现。
答案 0 :(得分:2)
请参阅Customizing tooltip content上的文档,了解实现所需目标的方法。您需要将自定义工具提示的内容指定为数据的另一列:
data.addColumn({type: 'string', role: 'tooltip'});
根据您的模式指定自定义格式化程序
var formatter = new google.visualization.NumberFormat({pattern:'$###.## bn'});
然后您可以通过映射输入来附加信息:
data.addRows([
['Fred','Ann',107.91],
['Bill','Ann',47.86],
// more input...
].map(function(d) {
d.push(formatter.format(d[2]); // the tooltip's formatted content as last column
return d;
}));
使用此映射,您可以应用您要查找的每种数字格式,或者执行更加精美的内容,例如HTML formatting。
google.load("visualization", "1.1", {packages:["sankey"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
var formatter = new google.visualization.NumberFormat({pattern:'$###.## bn'});
data.addColumn('string', 'From');
data.addColumn('string', 'To');
data.addColumn('number', 'Revenues');
data.addColumn({type: 'string', role: 'tooltip'});
data.addRows([
['Fred','Ann',107.91],
['Bill','Ann',47.86],
['Carol','Ann',817.9],
['Jim','Kevin',400],
['Ann','Kevin',973.67],
['Sally','Kevin',146.47],
['Kevin','EVP Sales',1520.14]
].map(function(d) {
d.push(formatter.formatValue(d[2]));
return d;
}));
// Set chart options
var options = {
width: 500,
height: 300,
formatNumber: '$### bn',
sankey: {
iterations: 64,
node: {
pattern: '$### bn', nodePadding: 30, interactivity: true, label: { fontName: 'Times-Roman',
fontSize: 14,
color: '#871b47',
bold: false,
italic: true }
},
link: {
//colorMode: 'source',
pattern: '$### bn'
},
allowHtml: 'true',
tooltip: {isHtml: 'true'}
}
};
// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.Sankey(document.getElementById('sankey_multiple'));
chart.draw(data, options);
}
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
</script>
<body>
<div id="sankey_multiple" style="width: 900px; height: 300px;"></div>
</body>