【问题标题】:How can I have each plot in matplotlib's `subplots` use a different axes?如何让 matplotlib 的“子图”中的每个图使用不同的轴?
【发布时间】:2013-05-17 14:02:37
【问题描述】:

因此,当我尝试使用 pyplot.subplots 绘制多个子图时,我会得到如下信息:

我怎样才能拥有:

  1. 每个子图有多个独立轴
  2. 每个子图的坐标轴
  3. 使用子图在每个子图轴上叠加图。我尝试做((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()

【问题讨论】:

  • 你使用的是什么版本的 matplotlib? “每个子图的多个独立轴”是什么意思?此外,“沿每个子图的轴”是否意味着您希望每个子图都有 独立 轴(即不与其他子图共享 x 轴或 y 轴),每个子图都有刻度标签? “使用子图在每个子图轴上叠加图”是什么意思? 请具体,并确保您想要实现的目标易于理解。如果您有任何想要的图像等,请参考它们。
  • 你解决了吗?

标签: matplotlib axes


【解决方案1】:

问题 1 和 2:

为此,明确设置子图选项sharexsharey=False

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

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

另外,这两个选项可以完全省略,因为False 是默认值。 (如下面的 rubenvb 所述)

问题 3:

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

(在plt.show()之前添加这个sn-p)

# 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')

【讨论】:

  • False 是默认值。 OP 正在明确设置它们。
【解决方案2】:

不要告诉它共享轴:

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)

doc

【讨论】:

  • 这是否依赖于 WX 后端?由于轴仅与sharex='col',sharey='row' 部分共享,它确实对我有用。请参阅:nbviewer.ipython.org/5599482 或者可能代码和 OP 中的屏幕截图不匹配。
  • :/ 我如何证明代码和截图是一致的?对我来说是这样的:i.imgur.com/p4Kftwa.png
  • 另外我将如何在共享轴中叠加图 in
  • 叠加层是什么意思?在给定轴上显示多个图?
  • ex 4 个图都共享 x、y 轴,然后在其中一个图的“右侧”使用相同/不同轴的条形图覆盖?
猜你喜欢
  • 1970-01-01
  • 2021-03-22
  • 2015-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多