12 python numpy matplotlib scipy
如果我有一系列包含一列和多行的子图,即:
plt.subplot(4, 1, 1) # first subplot
plt.subplot(4, 1, 2) # second subplot
# ...
Run Code Online (Sandbox Code Playgroud)
如何调整前N个子图的高度?例如,如果我有4个子图,每个子图都在自己的行上,我希望它们全部具有相同的宽度,但是前3个子图更短,即它们的y轴更小并且占用的图比行中最后一个绘图的y轴.我怎样才能做到这一点?
谢谢.
ben*_*oss 21
即使这个问题很老,我也想回答一个非常相似的问题.@ Joe对AxesGrid的引用,是我的问题的答案,并且使用起来很简单,所以我想说明这个功能的完整性.
AxesGrid功能提供了创建不同大小的图的能力,并通过以下subplot2grid功能非常具体地放置它们:
import matplotlib.pyplot as plt
ax1 = plt.subplot2grid((m, n), (row_1, col_1), colspan = width)
ax2 = plt.subplot2grid((m, n), (row_2, col_2), rowspan = height)
ax1.plot(...)
ax2.plot(...)
Run Code Online (Sandbox Code Playgroud)
注意,对于最大值row_n,col_n是m-1与n-1分别作为零索引符号被使用.
特别针对这个问题,如果总共有5个子图,其中最后一个子图的高度是其他子图的两倍,我们可以使用m=6.
ax1 = plt.subplot2grid((6, 1), (0, 0))
ax2 = plt.subplot2grid((6, 1), (1, 0))
ax3 = plt.subplot2grid((6, 1), (2, 0))
ax4 = plt.subplot2grid((6, 1), (3, 0))
ax5 = plt.subplot2grid((6, 1), (4, 0), rowspan=2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

有多种方法可以做到这一点。最基本(也是最不灵活)的方法是调用如下内容:
import matplotlib.pyplot as plt
plt.subplot(6,1,1)
plt.subplot(6,1,2)
plt.subplot(6,1,3)
plt.subplot(2,1,2)
Run Code Online (Sandbox Code Playgroud)
这会给你这样的东西:

但是,这不太灵活。如果您使用的是 matplotlib >= 1.0.0,请考虑使用GridSpec。这非常好,并且是布置次要情节的更灵活的方式。
| 归档时间: |
|
| 查看次数: |
21458 次 |
| 最近记录: |