0

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
4

2 に答える 2

1

ソースで問題を修正することにしました。特定の順序でクエリを指定し、同じ方法で結果を期待します。

gviz_api.py( Line 488)をローカルで変更しました

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

DataTablesは、作成時に提供されたのと同じ順序でデータ ( 、 などで返される) をtoJS()表示/公開します。toJSON()DataTable

viewsチャートが機能することを確認するために、ぎこちない軍隊を必要としないという追加の利点があります。

カイロ

于 2012-08-28T14:49:32.893 に答える
0

だから私はハックの解決策を見つけました。観察から、gviz_apiがテーブルに列を追加するときにアルファベット順を使用していることに気付きました。私の列名には、アルファベット順ではない異なるラベル(つまり、('string'、'label')の2番目のエントリ)がありました。これを修正するために、ラベル名の前に番号(つまり、('string'、 '1label')を付けました。 )列の順序が希望どおりになるようにします。

他の誰かがよりハッキーな解決策を見つけたら、私に知らせてください。

于 2012-07-22T23:14:07.597 に答える