2016-04-28 197 views
1

y轴的x轴我有读几个文件,并返回接下来的情节一个Python代码:换取蟒蛇

plot

现在我想想象它由Y交换x轴轴。我知道我可以在matplotlib中做到这一点,只是把plt.plot(y,x)而不是plt.plot(x,y),但我在图中有8个不同的地块,所以如果地块数量增加,一个一个地改变一切可能会很烦人: 有没有办法改变轴显示图像之前?

下面是部分代码:

plt.figure(figsize=(14,8)) 

plt.plot(Ks_d001,std_d001,'k.',ms=2)#,label='all population') 
plt.plot(Ks_d002,std_d002,'k.',ms=2) 

KS = np.concatenate([Ks_d001,Ks_d002]) 
STD = np.concatenate([std_d001,std_d002]) 

grid = np.linspace(11.5,max(KS),50) 
k0 = smooth.NonParamRegression(KS, STD, method=npr_methods.SpatialAverage()) 
k0.fit()  

plt.plot(grid, k0(grid), label="non-param. fit", color='red', linewidth=2) 

plt.plot(Ks_Eta_d001,std_Eta_d001,'s',ms=10,color='green',label='Eta d001') 
plt.plot(Ks_Eta_d002,std_Eta_d002,'s',ms=10,color='blue',label='Eta d002') 

plt.plot(Ks_IP_d001,std_IP_d001,'p',ms=10,color='cyan',label='IP d001') 
plt.plot(Ks_IP_d002,std_IP_d002,'p',ms=10,color='orange',label='IP d002') 

plt.plot(Ks_GLS_d001,std_GLS_d001,'h',ms=10,color='red',label='GLS d001') 
plt.plot(Ks_GLS_d002,std_GLS_d002,'h',ms=10,color='yellow',label='GLS d002') 
+1

在调用图之前做'x,y = y,x'? –

+0

正如我所说,在这种情况下,我可以简单地做plt.plot(y,x)或更改我在文件中读取的行数(x,y = y,x的相同想法)。我试图找到一种方法来不修改代码,只修改剧情显示,如果有的话。 –

+0

好吧,有了这个,你必须在一个地方更改代码,而不是在8个地方。但也许我不明白这个问题。如何张贴更多的代码? –

回答

2

有(据我所知)在matplotlib没有的功能,但一般你可以只使用一些数据结构来保存你的价值观,这使得它更容易在全局或单独更改属性:

#   Name    x   y   m 
plots = {'Eta d001': [[Ks_Eta_d001, std_Eta_d001, 's'], {'ms': 10, 'color': 'green'}], 
     'Eta d002': [[Ks_Eta_d002, std_Eta_d002, 's'], {'ms': 10, 'color': 'blue'}], 
     ...} 

,然后做图循环:

for plotname, ((x, y, marker), kwargs) in plots.items(): 
    plt.plot(x, y, marker, label=plotname, **kwargs) 

改变xy是那么容易,因为:

for plotname, ((x, y, marker), kwargs) in plots.items(): 
    plt.plot(y, x, marker, label=plotname, **kwargs) 

的字典里没有保留原来的秩序,但绘图时应该没有多大关系。如果确实如此,请使用collections.OrderedDict而不是正常字典。

+0

我看,字典是一个有趣的用途,并且运作良好!谢谢您的帮助!! –