2017-03-01 107 views
0

我想用matplotlib做兩個圖的子圖,並在兩者中添加一條水平線。這可能是基本的,但我不知道如何指定其中一條線應該在第一個圖中繪製,它們都會在最後一箇中結束。例如添加一條線到matplotlib子圖

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
%matplotlib inline 

s1= pd.Series(np.random.rand(10)) 
s2= pd.Series(np.random.rand(10)) 

fig, axes = plt.subplots(nrows=2,ncols=1) 

f1= s1.plot(ax=axes[0]) 
l1=plt.axhline(0.5,color='black',ls='--') 
l1.set_label('l1') 

f2= s1.plot(ax=axes[1]) 
l2=plt.axhline(0.7,color='red',ls='--') 
l2.set_label('l2') 

plt.legend() 

subplot with horizontal lines

axhline沒有 「開刀」 作爲參數,如熊貓繪圖功能一樣。因此,這會工作:

l1=plt.axhline(0.5,color='black',ls='--',ax=axes[0]) 

我讀matplotlib the examples,我試圖用這個其他,不能正常(可能是很好的理由)工作選項

axes[0].plt.axhline(0.5,color='black',ls='--') 

我應該怎麼做才能畫出道道次要情節?理想與傳說謝謝!

+1

你嘗試'軸[0] .axhline(0.5,顏色= '黑',LS = ' - ')'?這應該工作。 –

+0

是的!謝謝@NickBecker!我只需要解決出現在兩個子圖中的圖例問題:-)。我可能會消除這個問題,因爲我意識到這有點愚蠢。 – Nabla

回答

0

在@Nick Becker的幫助下,我回答了我自己的「語法」問題。

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
%matplotlib inline 


s1= pd.Series(np.random.rand(10)) 
s2= pd.Series(np.random.randn(10)) 

fig, axes = plt.subplots(nrows=2,ncols=1) 

f1= s1.plot(ax=axes[0],label='s1') 
l1=axes[0].axhline(0.5,color='black',ls='--') 
l1.set_label('l1') 

axes[0].legend(loc='best') 

f2= s1.plot(ax=axes[1],label='s2') 

l2=axes[1].axhline(0.5,color='black',ls='--') 

l2.set_label('l2') 

axes[1].legend(loc='best') 

subplots with horizontal lines

相關問題