我找不到关于如何将子图附加到已绘制的图形的明确参考。SO 上的一些答案已经过时,大多数答案都不清楚,并且 mpl 文档本身并没有很好地展示这一点。
问题fig.add_subplot是它只会在任何现有的轴上绘制。
在深入研究源代码后,我发现了三种不同的方法来做到这一点。
所有示例均假设现有图形fig和现有轴ax。
A)如果您选择简单的子图几何形状
# add new subplot
ax_new = fig.add_subplot(2, 1, 2)
ax_new.plot(x, y)
# update and redraw existing axis
ax.change_geometry(2, 1, 1)
Run Code Online (Sandbox Code Playgroud)
B) 如果你想使用更复杂的布局GridSpec
# create gridspec and add new subplot
gs = fig.add_gridspec(3, 1)
ax_new = fig.add_subplots(gs[2, 0])
ax_new.plot(x, y)
# update and redraw existing axis
ax.set_subplotspec(gs[:2, 0])
ax.update_params()
ax.set_position(ax.figbox)
Run Code Online (Sandbox Code Playgroud)
C) 使用axes_gridmpl 工具包
from mpl_toolkits.axes_grid1 import make_axes_locatable
divider = make_axes_locatable(ax)
# add new subplot of relative size 1 at the bottom of current axis
ax_new = divider.append_axes("bottom", 1)
ax_new.plot(x, y)
Run Code Online (Sandbox Code Playgroud)
希望这可以节省一些人的时间和挖掘!
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |