2014-04-24 44 views
2

我遇到類似於以下的問題:Creating a multiline graph using Vincent,但我沒找到解決方案。
使用來自Pandas DataFrame的vincent創建多行圖形

我想顯示一個多線圖,以獲取用戶在聊天工具上處理一天中每個小時的討論數量。
我得到了一個DataFrame,其格式如下。左邊的列表示小時,和對方列由用戶每個小時的討論數量:

 user1 user2 
... ... ... 
8  0  0 
9  1  0 
10  0  0 
11  0  0 
12  11 0 
... ... ... 

注:我沒有全部顯示DF,但我行從0到23

我嘗試下面的代碼來構建我的圖:

graph = vincent.Line(df) 
graph.axis_titles(x='Hour', y='Number of discussions') 
graph.legend(title="Users") 

這給了我以下錯誤:

array is not broadcastable to correct shape 

我真的沒有得到什麼錯,我嘗試了其他的東西。 我複製了我的指標作爲我的DF一個系列,是什麼給了我以下格式:

user1 user2 hour 
... ... ... ... 
8  0  0  8 
9  1  0  9 
10  0  0  10 
11  0  0  11 
12  11 0  12 
... ... ... ... 

我試着下面的代碼:

graph = vincent.Line(df, iter_idx='hour') 
graph.axis_titles(x='Hour', y='Number of discussions') 
graph.legend(title="Users") 

在這裏,我沒有錯誤,但像davidheller在我鏈接的文章中,我得到了一個沒有任何線條的圖表,而absicssa中的值爲0。我想我的vincent.Line對象的參數是不正確的,但我不知道如何傳遞它們。 你有什麼想法嗎?

回答

0

我得到了同樣的問題,我所做的是創建一個字典,而不是數據框。

user_d = {} 
for col in list(df.columns): 
    user_d[col] = list(df[col]) 

user_d['index'] = df.index.tolist() 

graph = vincent.Line(user_d, iter_idx='hour') 
graph.axis_titles(x='Hour', y='Number of discussions') 
graph.legend(title="Users") 

希望這有助於!

相關問題