我一直是Google的sankey图表的忠实拥护者,但有件事让我感到困扰-我不知道如何进行数字格式设置,以便相关单位显示在第三数据表列中。我尝试了几种方法-尝试使用formatter设置“模式”选项,但对我而言,似乎没有任何作用-请参见以下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文献,但是也没有明显的证据。
请参阅有关自定义工具提示内容的文档,以获取所需的方法。您需要将自定义工具提示的内容指定为数据的另一列:
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格式设置。
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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句