matplotlib - 如何将 matplotlib Figure 对象包含为子图?

标签 matplotlib

这个问题在这里已经有了答案:





Embed matplotlib figure in larger figure

(1 个回答)


7年前关闭。




如何使用 matplotlib Figure 对象作为子图?具体来说,我有一个创建 matplotlib 图对象的函数,我想将其作为子图包含在另一个图中。

简而言之,这是我尝试过的精简伪代码:

    fig1 = plt.figure(1, facecolor='white')
    figa = mySeparatePlottingFunc(...)
    figb = mySeparatePlottingFunc(...)
    figc = mySeparatePlottingFunc(...)
    figd = mySeparatePlottingFunc(...)
    fig1.add_subplot(411, figure=figa)
    fig1.add_subplot(412, figure=figb)
    fig1.add_subplot(413, figure=figc)
    fig1.add_subplot(414, figure=figd)
    fig1.show()

然而,遗憾的是,这失败了。我知道从函数调用返回的各个图是可行的——我做了一个 figa.show(),...,figd.show() 来确认它们是好的。我在上面的代码块中得到的最后一行--fig1.show()--是
具有框架和 x 和 y 刻度线/标签的四个空图的集合。

我已经做了很多谷歌搜索,并进行了广泛的实验,但很明显我错过了一些非常微妙或令人尴尬的明显(只要我能,我会很高兴成为后者不卡住)。

感谢您提供的任何建议!

最佳答案

你不能把 figurefigure .

您应该修改您的绘图函数以采用 axes对象作为论据。

我也不清楚为什么 kwarg figure在那里,我认为它是继承工作方式、文档自动生成方式以及某些 getter/setter 工作方式自动化的产物。如果你注意到,它会说 figure未记录在 Figure 中文档,因此它可能无法满足您的要求;)。如果你深入一点,那个 kwarg 真正控制的是所创建的轴也被附加的​​图形,这不是你想要的。

一般来说,在人物之间移动现有的轴/艺术家并不容易,有太多的内部管道需要重新连接。我认为这是可以做到的,但会涉及到内部结构,并且不能保证它会与 future 的版本一起使用,或者如果内部结构发生变化会破坏它,你会收到警告。

你需要你的绘图函数来获取 Axes对象作为论据。您可以使用如下模式:

def myPlotting(..., ax=None):
    if ax is None:
        # your existing figure generating code
        ax = gca()

所以如果你传入 Axes它被吸引到对象(您需要的新功能),但如果您不这样做,所有旧代码都将按预期工作。

关于matplotlib - 如何将 matplotlib Figure 对象包含为子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16750333/

相关文章:

python - 使图表更大

python - Matplotlib 在给定 csv 数据的情况下创建曲面图 (x,y,z,color) - 颜色错误

python - 如何在窗口坐标内插入一个带有数字的圆圈?

python-3.x - 带表格格式的 Matplotlib 条形图

python-3.x - 类型错误 : Image data can not convert to float on plt. imshow()

python - 如何在绘图中添加粗体注释文本

python - 具有自定义颜色图的轮廓重复颜色而不是改变颜色

python - 使用散点数据集在 MatPlotLib 中生成热图

python - Python 中的 4 个子图条形图

python - 根据所选值总结和绘制 ndarrays 列表