嗨,大家好(我是GAS的新手),
我想知道是否有可能在dataTable中计算数据,然后使用饼图正确显示该数据。
为了帮助说明我想要做的事情,下面我有一个dataTable描述人们以及他们所居住的城市,国家和大陆:
var dataTable = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Name")
.addColumn(Charts.ColumnType.STRING, "City")
.addColumn(Charts.ColumnType.STRING, "Country")
.addColumn(Charts.ColumnType.STRING, "Continent")
.addRow(["Tom", "New York", "USA", "North America"])
.addRow(["Dick", "San Francisco", "USA", "North America"])
.addRow(["Harry", "San Francisco", "USA", "North America"])
.addRow(["Paul", "Los Angeles", "USA", "North America"])
.addRow(["Matt", "Sydney", "Australia", "Australia"])
.addRow(["John", "Melbourne", "Australia", "Australia"])
.addRow(["Craig", "London", "England", "Europe"])
.build();
我希望能够创建一个按国家/地区筛选的饼图,告诉我人们来自哪些城市。即按国家“美国”筛选的饼图应显示纽约25%,旧金山50%,洛杉矶25%的切片。
这甚至可能吗?我最接近的是在我的dataTable中创建一个“Tally”列(全部分配为1),这样我就可以创建饼图了,即:
var dataTable = Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING, "Name")
.addColumn(Charts.ColumnType.STRING, "City")
.addColumn(Charts.ColumnType.STRING, "Country")
.addColumn(Charts.ColumnType.STRING, "Continent")
.addColumn(Charts.ColumnType.NUMBER, "Tally")
.addRow(["Tom", "New York", "USA", "North America", 1])
.addRow(["Dick", "San Francisco", "USA", "North America", 1])
.addRow(["Harry", "San Francisco", "USA", "North America", 1])
.addRow(["Paul", "Los Angeles", "USA", "North America", 1])
.addRow(["Matt", "Sydney", "Australia", "Australia", 1])
.addRow(["John", "Melbourne", "Australia", "Australia", 1])
.addRow(["Craig", "London", "England", "Europe", 1])
.build();
但是这会给我一个饼图(再次使用过滤器国家“美国”),其中包括以下切片:纽约25%,旧金山25%,旧金山25%,洛杉矶25%。所以仍然不完全正确,感觉就像是一个黑客工作。
我想到的另一种选择是从这个表中取适当的值,执行我自己的计算并创建第二个(如果你愿意的话),为饼图提供数据的dataTable,但我认为不可能读取来自现有dataTable的值。
此时您可能会问的一个问题是,为什么我只有一个仅由我需要的数据组成的dataTable? - 好吧,我想使用这个父数据表创建多个图表/设置多个过滤器。
另一个问题可能是 - 你为什么不创建多个独立的dataTables;每个图表一个?如果可能的话,我希望能够使用一组控制父数据表的过滤器,然后在我创建的各种饼图中影响我的计算。
有没有人有任何想法?任何帮助,将不胜感激。到目前为止,我所经历过的所有教程/示例都是非常具有介绍性的,并没有处理这种复杂性。如果您需要进一步的诊断信息,请告诉我这些是否有意义。
干杯,
马特
答案 0 :(得分:0)
我觉得自己有点像菜鸟,但是对于那些提出这个问题的人来说,实际上就是HTMLService。我想谷歌提供了许多工具来完成工作,这取决于你需要做什么 - 而HTMLService是任何复杂的工具。
我目前正在研究解决方案,使用dataTables及其数据透视功能(此处更多内容为https://developers.google.com/chart/interactive/docs/querylanguage#Pivot)。一旦我编写了一些代码,我就会把它添加到所有人看来......