2013-05-06 67 views
53

我開始我的IPython的筆記本採用製作多圖中相同IPython的筆記本電池

ipython notebook --pylab inline 

這是我在一個單元代碼

df['korisnika'].plot() 
df['osiguranika'].plot() 

這工作正常,就會得出兩個線,但在同一張圖上。

我想畫一個單獨的圖表上的每一行。 如果圖表彼此相鄰,而不是一個接一個,那將會很棒。

我知道我可以把第二行放在下一個單元格中,然後我會得到兩個圖表。但我希望這些圖表彼此接近,因爲它們表示相同的邏輯單元。

回答

56

首先使多個軸,並將它們傳遞給熊貓繪圖功能,如:

fig, axs = plt.subplots(1,2) 

df['korisnika'].plot(ax=axs[0]) 
df['osiguranika'].plot(ax=axs[1]) 

它仍然給你1個的數字,但有兩個不同的地塊彼此旁邊。

+2

這是工作。現在我不想改變圖像的大小。我可以用fig,axs = plt.subplots(1,2,figsize =(15,5))來完成。有沒有什麼方法來設置像素的大小? – WebOrCode 2013-05-06 07:31:25

+0

使用figsize確實是一種方式,即以英寸爲單位的尺寸。將有多少像素取決於dpi,它固定用於在屏幕上顯示。但爲了保存,可以通過添加dpi關鍵字來設置。 – 2013-05-06 07:44:17

+2

對於屏幕顯示來說,dpi是固定的並不是很準確(它是*而不是*)。 IPython完全基於像素大小顯示圖像,並且像素大小由matplotlib中的「savefig.dpi」配置乘以英寸數字大小確定。內聯數字使用與編寫文件相同的savefig路徑。 – minrk 2013-05-06 18:36:22

54

您也可以在每個繪圖之後調用show()函數。 e.g

plot(a) 
    show() 
    plot(b) 
    show() 

見例如在 - http://nbviewer.ipython.org/6151560

+1

很好,但是如何設置情節圖片的位置,如(2,2)或(1,2)? – Pythoner 2016-04-08 15:07:05

+0

使用此選項,圖必須一個接一個出現。爲了更好地控制整體佈局,'pyplot.subplots()'是要走的路。 – EOL 2017-10-01 19:55:36

5

的另一種方式,對品種。雖然這比其他人稍微靈活一些。不幸的是,這些圖形顯示爲一個在另一個之上,而不是並排顯示,這是您在原始問題中所要求的。但它非常簡潔。

df.plot(subplots=True) 

如果數據框具有比兩大系列,而您只需要繪製這兩個,你需要用df[['korisnika','osiguranika']]更換df

1

我不知道這是否是新的功能,但是這將繪製在不同的數字:

df.plot(y='korisnika') 
df.plot(y='osiguranika') 

,而這將在同一圖形繪製:(就像在OP代碼)

df.plot(y=['korisnika','osiguranika']) 

我發現這個問題,因爲我使用的是前一種方法,並希望他們在同一個圖上繪圖,所以你的問題實際上是我的答案。

1

事情是這樣的:

import matplotlib.pyplot as plt 
... code for plot 1 ... 
plt.show() 
... code for plot 2... 
plt.show() 

注意,這也會,如果你使用的是seaborn包繪製工作:

import matplotlib.pyplot as plt 
import seaborn as sns 
sns.barplot(... code for plot 1 ...) # plot 1 
plt.show() 
sns.barplot(... code for plot 2 ...) # plot 2 
plt.show()