2

基本上,我正在使用 google App Engine (Java)、Datastore 和 Google Visualization 图表创建一个 GWT 应用程序。

我使用了一个简单的折线图来表示以下信息 - 年份(X 轴)上的值(Y 轴)

我从数据存储区获取以下值作为实体列表:

对 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

我可以轻松地为每个人创建图表。为此,我使用以下Google 可视化数据源库在服务器上创建DataTable - 然后使用 Json 将其发回。

现在我想要创建一个组合/连接两个数据表的图表

我可以看到自己实现这一点的唯一另一种方法是单独创建每个TableRow - 这对我来说现在感觉有点矫枉过正,因为数据必须在每个人的正确列中,即 2012 年的 TableRow 需要

Year |Mike | Jon
2006 | 85% | null
2011 | 65% | 10%
2010 | null| 84%
2011 | 65% | 10%
2012 | 55% | 84%

这对我来说特别棘手,因为我为每个人发送单独的请求 - 例如,如果我请求 Jon,那么我会得到一个代表每一行的实体列表,但是当我想加入它们时,我需要经历获得年,将值添加到右列等等等。这一切似乎都过大了,必须有一种方法来合并表,以便您可以自动生成上述行集。

我想要的只是为 Jon 和 Mike 以及 Sally 出现时生成一个 DataTable,然后将它们全部合并到一个简单的命令中,以便我得到一个漂亮的图表,每条线都映射到正确的人。

ps 我这段代码应该在服务器上用Java编写......

4

3 回答 3

1

可以将两个数据表合并为一个:

google.visualization.data.join(dt1, dt2, joinMethod, 键, dt1Columns, dt2Columns)

看看https://developers.google.com/chart/interactive/docs/reference#google_visualization_data_join

于 2014-02-27T15:00:58.010 回答
0

我没有注意到 DataTable 的 setCell 方法 - 我正忙于查看 addRow addCell 方法......

请参阅https://developers.google.com/chart/interactive/docs/datatables_dataviews

仍然 - 能够合并两个数据表会很棒......

于 2013-04-10T12:32:32.353 回答
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);
于 2014-11-16T11:09:45.930 回答