如何在Matplotlib的`subplots`中使每个图使用不同的坐标轴?

5
当我尝试使用pyplot.subplots绘制多个子图时,会得到如下结果:

Four subplots

我该如何做到以下三点呢?

  1. 每个子图都有独立的轴
  2. 每个子图都有自己的坐标轴
  3. 在每个子图的轴上叠加绘图 使用subplots。我尝试了((ax1,ax2),(ax3,ax4)) = subplots然后两次调用ax1.plot,但结果没有任何显示。

图片对应的代码:

import string
import matplotlib
matplotlib.use('WX')

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
from itertools import izip,chain


f,((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2,sharex='col',sharey='row')

ax1.plot(range(10),2*np.arange(10))
ax2.plot(range(10),range(10))
ax3.plot(range(5),np.arange(5)*1000)
#pyplot.yscale('log')
#ax2.set_autoscaley_on(False)
#ax2.set_ylim([0,10])


plt.show()

1
你正在使用哪个版本的matplotlib? “每个子图都有多个独立的轴”是什么意思?此外,“每个子图都有坐标轴”是否意味着您希望每个子图都具有独立的坐标轴(即不与其他子图共享x或y轴),其中每个子图都具有刻度标签?“在每个子图轴上叠加绘图”是什么意思? 请具体说明,并确保易于理解您想要实现的内容。如果您有任何图像等,以展示您需要的样子,请参考它们。 - sodd
你解决了这个问题吗? - tacaswell
2个回答

7

问题1和2:

为了实现这一点,明确设置子图选项sharexsharey=False

将代码中的这行替换为所需结果。

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex=False, sharey=False)

此外,这两个选项都可以完全省略,因为默认值为False。(如下所述rubenvb

问题3:

以下是向两个子图添加辅助图的两个示例:

(在plt.show()之前添加此片段)

# add an additional line to the lower left subplot
ax3.plot(range(5), -1*np.arange(5)*1000)

# add a bar chart to the upper right subplot
width = 0.75       # the width of the bars
x = np.arange(2, 10, 2)
y = [3, 7, 2, 9]

rects1 = ax2.bar(x, y, width, color='r')

Subplots with independent axes, and "multiple" plots


False 是默认值。操作员正在显式地设置它们。 - rubenvb

0

不要告诉它共享坐标轴:

f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)

ax1.plot(range(10),2*np.arange(10))
ax2.plot(range(10),range(10))
ax3.plot(range(5),np.arange(5)*1000)

文档


1
这是否与WX后端有关?只有部分共享轴的情况下,使用sharex='col',sharey='row'对我有效。请参见: http://nbviewer.ipython.org/5599482 或者也许代码和OP中的截图不匹配。 - Rutger Kassies
我该如何证明代码和截图是一起的?在我看来,它看起来像这样:http://i.imgur.com/p4Kftwa.png - Eiyrioü von Kauyf
还有,我该如何在共享轴上叠加绘图? - Eiyrioü von Kauyf
什么是叠加?在给定的坐标轴中显示多个图形? - tacaswell
将4个图形共享x、y轴,然后在其中一个图形上叠加一个柱状图,该柱状图使用与/不同于图形右侧的轴? - Eiyrioü von Kauyf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接