使用Google的Visualization API,我使用google.visualization.data.group根据我的原始数据创建子表.我的原始数据使用{v:"US",f:"United States"}的技巧来显示除值之外的其他内容,但是当我使用聚合函数时,格式化被消除,只留下"US"部分.
有没有办法保留原始格式,或者将其添加回使用组聚合创建的DataTables的简单方法?
样本数据:
[2010, {v:"MA", f:"Morocco"}, {v:"002", f:"Africa"}, {v:"002", f:"Northern Africa"}, 21.12724],
[2010, {v:"AW", f:"Aruba"}, {v:"019", f:"Americas "}, {v:"019", f:"Caribbean"}, 0.98],
[2010, {v:"AF", f:"Afghanistan"}, {v:"142", f:"Asia"}, {v:"142", f:"Southern Asia"}, 0.9861],
[2010, {v:"AO", f:"Angola"}, {v:"002", f:"Africa"}, {v:"002", f:"Middle Africa"}, 5.11774],
Run Code Online (Sandbox Code Playgroud)
聚合功能:
var countryData = google.visualization.data.group(
rawData,
[0, 1],
[{'column': 4, 'aggregation': google.visualization.data.sum, 'type': 'number'}]
);
Run Code Online (Sandbox Code Playgroud)
编辑:
进一步考虑,可能无法对格式进行分组,因为无法保证每个值的格式都是一致的.考虑到这一点,编写一个将格式添加到我的数据的每一列的函数可能更好(或唯一可能).所以问题就变成了,"我该怎么做?"
我真的不想单独创建原始数据作为未格式化的值,然后使用其他表来查找每个值的格式.这将需要额外的2个表(一个用于28行的区域,一个用于超过240行的国家),然后创建两个函数来查看分组表中的每个值(将有30年以上的数据,意味着成千上万行)添加值.
这似乎是一个非常复杂的解决方案.
有没有办法用修饰函数做到这一点?我可以编写一个函数来将表中的每个值作为{v:"US",f:"United States"}格式化对象返回吗?或者是否有一种简单的方法来编写列格式化程序,它将在我的原始表中查找适当的值并采用该格式?这对我(谁必须写它)和用户(谁必须加载它)都会造成最少的麻烦?
编辑2:
看起来我应该能够使用以下内容为新表创建格式化程序:
function (dt, row) {
return {
v: (dt.getValue(row, 1) / 1000000),
f: (dt.getValue(row, 1) / 1000000) …
Run Code Online (Sandbox Code Playgroud) javascript google-visualization google-data-api google-datatable
如何使用C#创建google.visualization.datatable所期望的JSON源?显然使用这JavaScriptSerializer
是不可能的,因为预期的JSON具有文档中描述的奇怪结构:
var dt = new google.visualization.DataTable(
{
cols: [{id: 'task', label: 'Task', type: 'string'},
{id: 'hours', label: 'Hours per Day', type: 'number'}],
rows: [{c:[{v: 'Work'}, {v: 11}]},
{c:[{v: 'Eat'}, {v: 2}]},
{c:[{v: 'Commute'}, {v: 2}]},
{c:[{v: 'Watch TV'}, {v:2}]},
{c:[{v: 'Sleep'}, {v:7, f:'7.000'}]}
]
},
0.6
)
Run Code Online (Sandbox Code Playgroud) 我正在使用Google Dashboard的表功能,我想将id的值赋给每个创建的行的tr,我有如下数组
var data = google.visualization.arrayToDataTable([
['Name', 'Donuts eaten','id'],
['Michael' , 5,'1'],
['Elisa', 7,'2'],
['Robert', 3,'3'],
['John', 2,'4'],
['Jessica', 6,'5'],
['Aaron', 1,'6'],
['Margareth', 8,'7']
]);
var table = new google.visualization.ChartWrapper({
'chartType': 'Table',
'containerId': 'chart2',
dataTable: data,
'options': {
'width': '500px'
}
});
table.draw();
Run Code Online (Sandbox Code Playgroud)
我仍然无法弄清楚是否有某种方法将值绑定到DOM元素,任何帮助将不胜感激.
我正在试验Google的可视化表的表格和示例代码.
https://google-developers.appspot.com/chart/interactive/docs/gallery/table
但是,我需要能够在单元格内使用图像(通过URL).看来AddColumn
功能只支持string
,number
,boolean
,date
,datetime
,和timeofday
每个类型的datatable
文档.
有没有办法围绕这个或我缺少的东西能够将网络图像插入某些单元格?
如何更新Google可视化数据表中的数据?例:
var data = new google.visualization.DataTable();
data.addColumn('string', 'Name');
data.addColumn('string', 'Occupation');
data.addRow(['Bob', 'Shoe Wearer']);
data.addRow(['Henry', 'Transformer']);
data.addRow(['Betty', 'Seltzer Connoisseur']);
// Time passes and Bob changes jobs:
data.addRow(['Bob', 'Beach Comber']);
Run Code Online (Sandbox Code Playgroud)
当然,这增加了一个新行,现在我有两个Bobs.我怎样才能更新鲍勃的职业?
在谷歌图表数据表对象中,我可以使用获取当前选择点值(V轴/ Y轴)datatable.getValue(...)
.但是,如果我想从X轴获得时间/日期/年份(见截图).我没有找到任何数据表的功能来实现这一点.有谁知道怎么做?
这是我的代码
google.visualization.events.addListener(chart, 'select', function(a, b, c, d) {
var selectedItem = chart.getSelection()[0];
if (selectedItem) {
// Get the current Y-axis value which is 1120
var value = data.getValue(selectedItem.row, selectedItem.column);
alert('The user selected ' + value);
// How I can get the value of 2015 which is the X-axis value??????
}
});
Run Code Online (Sandbox Code Playgroud) 我正在使用此DataTable 绘制图表(Google Charts API):
chart_data = new google.visualization.DataTable();
chart_data.addColumn('string','date');
chart_data.addColumn('number','value');
chart_data.addRows([
["10 May",0.23],
["11 May",0.26],
["12 May",0.29],
["13 May",0.23],
["14 May",0.21],
["15 May",0.25],
["16 May",0.28]
]);
Run Code Online (Sandbox Code Playgroud)
我需要弄清楚DataTable中值列的最低值和最高值.有一些名为google.visualization.data.max的函数,但是没有关于如何实现它的任何实际代码示例.有人之前使用过这个功能吗?或者,有人为此问题提供另一种解决方案吗?谢谢!