基本上我正在使用谷歌应用引擎(Java),数据存储区和谷歌可视化图表创建一个GWT应用程序。
我使用简单的折线图来表示以下信息 - 年度值(Y轴)(X轴)
我从数据存储区获取以下值作为实体列表:
请求Jon返回实体(每行是一个实体):
Person | Value | Year
Jon | 80% | 1992
Jon | 74% | 2010
Jon | 10% | 2011
Jon | 84% | 2012
请求迈克退货:
Person | Value | Year
Mike | 80% | 2000
Mike | 74% | 2001
Mike | 10% | 2002
Mike | 84% | 2003
Mike | 85% | 2006
Mike | 65% | 2011
Mike | 55% | 2012
我可以轻松地为每个人创建一个图表。我是通过使用以下DataTable在服务器上创建Google Visualization Data Source Library来实现的 - 然后我使用Json将其发回。
现在我想要的是创建一个组合/连接两个DataTables的图表
我能看到自己实现这一点的唯一另一种方法是单独创建每个TableRow - 这对我来说感觉有点过分,因为数据必须在每个人的正确列中,即TableRow for 2012年将需要
Year |Mike | Jon
2006 | 85% | null
2011 | 65% | 10%
2010 | null| 84%
2011 | 65% | 10%
2012 | 55% | 84%
这对我来说特别棘手,因为我为每个人发送了单独的请求 - 例如,如果我请求Jon,那么我会得到一个代表每一行的实体列表,但是当我想加入它们时,我需要经历痛苦得到年份,将值添加到正确的列等等。这一切似乎有点矫枉过正,必须有一种合并表的方法,以便您可以自动生成上面的行集。
我想要的只是为Jon和Mike和Sally生成一个DataTable,如果她出现,然后在一个简单的命令中将它们全部合并,这样我得到一个漂亮的图表,每行都映射到正确的人。
p.s我的代码应该用Java在服务器上编写......
答案 0 :(得分:1)
可以将两个数据表连接成一个:
google.visualization.data.join(dt1,dt2,joinMethod,keys,dt1Columns,dt2Columns)
查看https://developers.google.com/chart/interactive/docs/reference#google_visualization_data_join
答案 1 :(得分:0)
我没有注意到DataTable的setCell方法 - 我太忙于查看addRow addCell方法...
请参阅https://developers.google.com/chart/interactive/docs/datatables_dataviews
仍然 - 能够合并两个数据表......
答案 2 :(得分:0)
您可以转换为JSON并合并它们 下面的示例是用Javascript编写的,但Java中的方法是相同的。
var json1 = JSON.parse(dataTable1.toJSON());
var json2 = JSON.parse(dataTable2.toJSON());
var mergedRows = json1.rows.concat(json2.rows);
json1.rows = mergedRows;
var mergedDataTable= new google.visualization.DataTable(json1);