谷歌图表api:修复表中的列

google charts api: fix columns in table

本文关键字:api 谷歌      更新时间:2024-01-12

我已经使用gviz_api创建了一个表。该表包含由字符串值和数值组成的列。api自动选择列自身呈现的顺序;但是,我希望渲染按照与我提供描述相同的顺序进行。

为了创建表,我传入了一个描述,这是一个字典,而数据是每行的字典列表。我认为,因为描述是一本字典,所以排序不是明确的,所以可以随意选择。有没有一种方法可以强制api使用我在描述中指定的列的顺序或任何其他方式?

以下是我的示例描述和数据代码:

descr = {'field1': ('string', 'Field1'),
         'field2': ('number', 'Field2'),
         'field3': ('string', 'Field3'),
         'field4': ('string', 'Field3')}
data = [{'field1': 'value1-1', 'field2': value1-2, 'field3': 'value1-3', 'field4': 'value1-4},
        {'field1': 'value2-1', 'field2': value2-2, 'field3': 'value2-3', 'field4': 'value2-4}]
data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
code = data_table.ToJSCode(stats_type_name + '_data')

以及事物实际呈现的顺序:

field3     field2      field1     field4
value1-3   value1-2    value1-1   value1-4
value2-3   value2-2    value2-1   value2-4

我希望事物出现的顺序与我在描述中指定的相同:

field1     field2      field3     field4
value1-1   value1-2    value1-3   value1-4
value2-1   value2-2    value2-3   value2-4

我决定从源头上纠正问题。我以特定的顺序指定查询,并以相同的方式期望得到结果。

我对gviz_api.pyLine 488)进行了局部修改

Change: for key, value in sorted(table_description.items()):
To    : for key, value in table_description.items():

DataTables现在将按照为创建DataTable提供的相同顺序呈现/公开它们的数据(在toJS()toJSON()等中返回)。

这是一个额外的好处,我现在不需要一大群笨拙的views来确保图表的工作!

Kylo

所以我找到了一个破解解决方案。通过观察,我注意到gviz_api在向表中添加列时使用了字母顺序。我的列名有不同的标签(即("string","label")中的第二个条目),它们不是按字母顺序排列的。为了解决这个问题,我在标签名称前加了一个数字(即("string","1label"),以确保列的顺序符合我的要求。

如果其他人找到了一个不那么棘手的解决方案,请告诉我。