谷歌图表输入数据

时间:2014-08-19 16:22:04

标签: python google-visualization

我有一个python脚本来构建Google图表的输入。它正确创建列标题和正确的行数,但重复每行中最后一行的数据。我尝试显式设置行索引而不是使用循环(这在实践中不起作用,但应该在测试中起作用)。它仍然为每个条目提供相同的值。当我将此代码与HTML用户表单放在同一页面上时,我也可以使用它。

end1 =数据表中的行数

end2 =数据表中由列标题列表

表示的列数

viewData =存储在数据库中的数据

c = connections['default'].cursor()
c.execute("SELECT * FROM {0}.\"{1}\"".format(analysis_schema, viewName))
viewData=c.fetchall()
curDesc = c.description
end1 = len(viewData)
end2 = len(curDesc)

创建列标题:

colOrder=[curDesc[2][0]]
if activityOrCommodity=="activity":
    tableDescription={curDesc[2][0] : ("string", "Activity")}
elif (activityOrCommodity == "commodity") or (activityOrCommodity == "aa_commodity"):   
    tableDescription={curDesc[2][0] : ("string", "Commodity")}
for i in range(3,end2 ):
    attValue =  curDesc[i][0]
    tableDescription[curDesc[i][0]]= ("number", attValue)
    colOrder.append(curDesc[i][0])

创建行数据:

data=[]
values = {}
for i in range(0,end1):
    for j in range(2, end2):
        if j == 2:
            values[curDesc[j][0]] = viewData[i][j].encode("utf-8")  
        else:
            values[curDesc[j][0]] = viewData[i][j]
    data.append(values)

dataTable = gviz_api.DataTable(tableDescription)
dataTable.LoadData(data)

return dataTable.ToJSon(columns_order=colOrder)

javascript输出示例:

var dt = new google.visualization.DataTable({cols:[{id:'activity',label:'Activity',type:'string'},{id:'size',label:'size',type:'number'},{id:'compositeutility',label:'compositeutility',type:'number'}],rows:[{c:[{v:'AA26FedGovAccounts'},{v:49118957568.0},{v:1.94956132673}]},{c:[{v:'AA26FedGovAccounts'},{v:49118957568.0},{v:1.94956132673}]},{c:[{v:'AA26FedGovAccounts'},{v:49118957568.0},{v:1.94956132673}]},{c:[{v:'AA26FedGovAccounts'},{v:49118957568.0},{v:1.94956132673}]},{c:[{v:'AA26FedGovAccounts'},{v:49118957568.0},{v:1.94956132673}]}]}, 0.6);

1 个答案:

答案 0 :(得分:1)

您似乎在为数据追加值,但每次迭代后您的值都没有重置......

我认为这不是正确的吗?如果是这样,只需在行设置代码中的第一个for循环内移动值