我有一个python代码,它读取了几个文件并返回下一个图:
现在我想想象它通过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')
答案 0 :(得分: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)
更改x
和y
就像以下一样简单:
for plotname, ((x, y, marker), kwargs) in plots.items():
plt.plot(y, x, marker, label=plotname, **kwargs)
字典不保留原始顺序,但在绘制时不应该太重要。如果确实重要,请使用collections.OrderedDict
而不是正常的字典。