2017-03-01 150 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

相关问题