到目前为止,我有以下代码:
colors = ('k','r','b')
ax = []
for i in range(3):
ax.append(plt.axes())
plt.plot(datamatrix[:,0],datamatrix[:,i],colors[i]+'o')
ax[i].set(autoscale_on=True)
字符串
对于每个轴的autoscale_on=True
选项,我认为每个图都应该有自己的y轴限制,但它们似乎都共享相同的值(即使它们共享不同的轴)。如何将它们设置为缩放以显示每个datamatrix[:,i]
的范围(只是一个显式调用.set_ylim()
?)还有,我如何为上面可能需要的第三个变量(datamatrix[:,2]
)创建偏移y轴?谢谢大家。
5条答案
按热度按时间ax6ht2ek1#
听起来你想要的是次要情节......你现在做的没有多大意义(或者我对你的代码片段感到非常困惑,无论如何......)。
试试类似这样的东西:
字符串
的数据
编辑:
如果你不想要次要情节,你的代码片段更有意义。
你试图添加三个轴在彼此的顶部。Matplotlib识别出已经有一个子图在图上的大小和位置完全相同,所以它每次都返回 * 相同 * 的轴对象。换句话说,如果你看你的列表
ax
,你会看到它们都是 * 相同的对象 *。如果你真的想这么做,你需要在每次添加轴的时候将
fig._seen
重置为空dict。不要把三个独立的图放在一起,而是使用
twinx
。例如
型
的
irlmq6kh2#
使用@joe-kington的答案:x1c 0d1x Bootstrap * 快速 * 绘制多个y轴共享x轴的图表
字符串
6qftjkof3#
多亏了Joe Kington的回答,我才能想出一个解决方案来满足我的要求,即所有额外的y轴都在图的左手侧。
我仍然想知道如何正确地做到这一点,因为这只是一个工作:
字符串
的数据
ryevplcw4#
twinx
。简单的例子:字符串
的数据
sh7euo9m5#
我已经使用了这个代码,它成功地生成了两个Y轴(主要和次要)与所需的规模阅读数据从Excel文件:
字符串