2016-09-17 75 views
0

我有兩個數據框,一個包含另一個的樣本子集。使用非重疊x軸繪製多個系列

df = pd.DataFrame(data= {'A' : [1,2,3,4,3,2,1]} 
       ,index = [1,2,3,4,5,6,7]) 
df2 = pd.DataFrame(data = {'B' : [0.7, 1.4]} 
       ,index = [2,6]) 

我想繪製這些圖表,使完整的數據集是一個線圖,而另一個是條形圖。

但是,試圖

ax = df.plot() 
df2.plot(kind='bar', ax=ax) 

給我

My ugly graph

我缺少什麼?

編輯

我剛剛發現這個工程

plt.plot(df.index, df['A']) 
plt.bar(df2.index, df2['B']) 

什麼功能差/什麼基本面應該我去了解?

回答

1

您應該按照以下方法操作。

import pandas as pd 
import matplotlib.pyplot as plt 
import matplotlib 

matplotlib.style.use('ggplot') 

df = pd.DataFrame(data= {'A' : [1,2,3,4,3,2,1]} 
         ,index = [1,2,3,4,5,6,7]) 
df2 = pd.DataFrame(data = {'B' : [0.7, 1.4]} 
         ,index = [2,6]) 

df_final = pd.concat([df,df2], axis=2) 

plt.figure() 

ax = df_final['A'].plot(kind='line', color='y', legend='A') 

df_final['B'].plot(kind='bar', color='r', legend='B') 

plt.show() 

在你前面的方法,你錯過了以下幾點:

  • 的指標(如一些通過)沒有在訂貨方面的數值的意義。因此,當你有兩個數據幀分開,然後依次繪製它們時,Pandas將無法知道如何將圖塊對齊在一起。
  • 如果你使用字符串作爲索引,在這種情況下,Pandas也不會自動將圖連接在一起並填充缺失的值。這是一種明智和預期的行爲,因爲具有不同含義和背景的不同地塊可能具有相似的指數。您在原始結果中看到的只是兩個圖形重疊在同一個圖上,而不考慮任何類型的對齊。

當您想要在同一圖形和同一組軸上同時繪製它們時,始終將不同的數據框對齊在一起。

編輯: 我在後面的問題中看到了編輯,因此添加了這個。

你編輯的一個可以工作,因爲現在你不使用熊貓包裝並直接使用matplotlib。熊貓plot()只是matplotlib的一個包裝。在這種情況下,matplotlib並沒有做任何假設,因爲它沒有特別小心數據集,只是將列值與適當的索引對齊。不過,我會建議使用熊貓進行涉及數據集的重要繪圖應用程序。 見Pandas documentation on visualization