如何在MxN Matplotlib图中为行应用不同的共享?

时间:2018-04-23 19:45:11

标签: python matplotlib subplot

我一直在尝试使用matplotlib.pyplot.subplots生成 2x3数字,其中第一行和第二行分别使用plotloglog命令。

因此,我尝试配置subplots,以便同一行中的绘图共享相同的y轴。

但是,loglog y轴(后一行)出现在plot y轴(前一行)中。

如果可能的话,请您告诉我们一个可行的配置吗?

具有随机数据集的MWE可能如下所示:

plt.clf()

data = np.arange(0.01, 20.0, 0.01)

f, axarr = plt.subplots(2, 3, sharey=True)

for i, ax in enumerate(axarr[0].flatten()):
    ax.plot(data, np.exp(-data / 5.0))

for i, ax in enumerate(axarr[1].flatten()):
    ax.loglog(data, np.exp(-data / 5.0))

plt.show()
plt.close()

结果:

enter image description here

2 个答案:

答案 0 :(得分:0)

我现在设计了一种配置此类行为的可怕的方式:

plt.clf()

data = np.arange(0.01, 20.0, 0.01)

f, axarr = plt.subplots(2, 3, sharey=False)

for i, ax in enumerate(axarr[0].flatten()):
    ax.plot(data, np.exp(-data / 5.0))
    if i > 0:
        ax.set_yticklabels([])

for i, ax in enumerate(axarr[1].flatten()):
    ax.loglog(data, np.exp(-data / 5.0))
    if i > 0:
        ax.set_yticklabels([])

plt.show()
plt.close()

导致:

enter image description here

答案 1 :(得分:0)

我猜你正在寻找:

f, axarr = plt.subplots(2, 3, sharey='row')

docs,将这些值传递给 sharexsharey

  • row:每个子图行将共享一个 x 轴或 y 轴。
  • col:每个子图列将共享一个 x 轴或 y 轴。