2013-02-26 121 views
6

在matplolib中的时间线图中,我可以在左边设置y轴不同的值,并用另一个scale设置另一个y轴向右?matplotlib图,带2个y轴

我使用这个:

import matplotlib.pyplot as plt 

plt.axis('normal') 
plt.axvspan(76, 76, facecolor='g', alpha=1) 
plt.plot(ts, 'b',linewidth=1.5) 
plt.ylabel("name",fontsize=14,color='blue') 
plt.ylim(ymax=100) 
plt.xlim(xmax=100) 
plt.grid(True) 
plt.title("name", fontsize=20,color='black') 
plt.xlabel('xlabel', fontsize=14, color='b') 
plt.show() 

我可以给2 y轴在这个情节?

在跨度选择:

plt.axvspan(76, 76, facecolor='g', alpha=1) 

我想右侧的文本来表征这个跨度,例如“这是跨度选择”我怎么能做到吗?

+0

[matplotlib:overlay plots可能的重复不同的尺度?](http://stackoverflow.com/questions/7733693/matplotlib-overlay-plots-with-different-scales) – tacaswell 2013-02-26 06:27:37

+0

不,它不是这个在同一个阴谋我想要在左边2 y轴和从图 – 2013-02-26 06:48:34

+0

开始,所以你想要一个带有4(?!)独立Y轴的图表?向下滚动到接受答案的后半部分。 – tacaswell 2013-02-26 07:09:03

回答

15

你想要twinxexample。要点如果是:

ax = plt.gca() 
ax2 = ax.twinx() 

然后,您可以打印到第一轴与

ax.plot(...) 

,第二个具有

ax2.plot(...) 

在你的情况(我觉得)你想:

import matplotlib.pyplot as plt 

ax = plt.gca() 
ax2 = ax.twinx() 
plt.axis('normal') 
ax2.axvspan(74, 76, facecolor='g', alpha=1) 
ax.plot(range(50), 'b',linewidth=1.5) 
ax.set_ylabel("name",fontsize=14,color='blue') 
ax2.set_ylabel("name2",fontsize=14,color='blue') 
ax.set_ylim(ymax=100) 
ax.set_xlim(xmax=100) 
ax.grid(True) 
plt.title("name", fontsize=20,color='black') 
ax.set_xlabel('xlabel', fontsize=14, color='b') 
plt.show() 
+1

你对传奇有什么看法?我把我的堆叠在一起 – raphael 2017-04-11 19:19:19

+1

@raphael明确地传递一个位置给传说调用来解除冲突。我不认为'最佳'放置算法会考虑其他轴上的艺术家。 – tacaswell 2017-04-11 22:45:50