This question already has an answer here:
Embed matplotlib figure in larger figure
(1个答案)
已关闭6年。
如何使用matplotlib Figure对象作为子图?具体来说,我有一个创建matplotlib Figure对象的函数,我想将此作为子图包含在另一个Figure中。
简而言之,这是我尝试过的简化代码:
可悲的是,这失败了。我知道从函数调用返回的各个图是可行的-我做了一个figa.show(),...,figd.show()来确认它们没问题。我在上面的代码块的最后一行得到的结果是--fig1.show()-是
具有框架以及x和y勾号/标签的四个空图的集合。
我已经做了大量的谷歌搜索,并进行了广泛的实验,但是很明显,我错过了一些非常微妙或令人尴尬的显而易见的东西(我会很高兴能够成为后者)解开)。
感谢您提供的任何建议!
因此,如果您传入
(1个答案)
已关闭6年。
如何使用matplotlib Figure对象作为子图?具体来说,我有一个创建matplotlib Figure对象的函数,我想将此作为子图包含在另一个Figure中。
简而言之,这是我尝试过的简化代码:
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勾号/标签的四个空图的集合。
我已经做了大量的谷歌搜索,并进行了广泛的实验,但是很明显,我错过了一些非常微妙或令人尴尬的显而易见的东西(我会很高兴能够成为后者)解开)。
感谢您提供的任何建议!
最佳答案
您不能将figure
放在figure
中。
您应该修改绘图功能,以axes
对象作为参数。
我也不清楚为什么存在kwarg figure
,我认为这是继承工作方式,文档自动生成方式以及一些getter/setter工作自动化方式的产物。如果您注意到的话,它说figure
在Figure
文档中没有记录,因此它可能无法满足您的要求;)。如果稍微深入一点,kwarg真正控制的就是创建的轴也已附加的图形,这不是您想要的。
通常,在图形之间移动现有的轴/艺术家并不容易,需要重新连接太多内部管道。我认为这是可以做到的,但是会涉及到内部结构,并且不能保证它会与将来的版本一起使用,或者无法保证内部结构发生变化而导致损坏,您将收到警告。
您需要使用绘图函数将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/
10-12 20:06