如何在 matplotlib 中的另一个图之上添加一个图?

Posted

技术标签:

【中文标题】如何在 matplotlib 中的另一个图之上添加一个图?【英文标题】:how to add a plot on top of another plot in matplotlib? 【发布时间】:2013-07-11 21:17:20 【问题描述】:

我有两个包含数据的文件:datafile1 和 datafile2,第一个始终存在,而第二个仅有时存在。因此,datafile2 上的数据图在我的 python 脚本中被定义为一个函数 (geom_macro)。在 datafile1 上数据的绘图代码结束时,我首先测试 datafile2 是否存在,如果存在,我调用定义的函数。但是我在这个案例中得到的是两个独立的数字,而不是一个将第二个的信息放在另一个之上。 我的脚本的那部分看起来像这样:

f = plt.figuire()
<in this section a contour plot is defined of datafile1 data, axes, colorbars, etc...>

if os.path.isfile('datafile2'):
    geom_macro()

plt.show()

“geom_macro”函数如下所示:

def geom_macro():
    <Data is collected from datafile2 and analyzed>
    f = plt.figure()
    ax = f.add_subplot(111)
    <annotations, arrows, and some other things are defined>

有没有一种类似“append”语句的方法用于在列表中添加元素,可以在 matplotlib pyplot 中使用来将绘图添加到现有的? 感谢您的帮助!

【问题讨论】:

【参考方案1】:

打电话

fig, ax = plt.subplots()

一次。要将多个绘图添加到同一轴,请调用ax 的方法:

ax.contour(...)
ax.plot(...)
# etc.

不要给f = plt.figure()打电话两次。


def geom_macro(ax):
    <Data is collected from datafile2 and analyzed>
    <annotations, arrows, and some other things are defined>
    ax.annotate(...)

fig, ax = plt.subplots()
<in this section a contour plot is defined of datafile1 data, axes, colorbars, etc...>

if os.path.isfile('datafile2'):
    geom_macro(ax)

plt.show()

您不必必须ax 设为geom_macro 的参数——如果ax 在全局命名空间中,则无论如何都可以从geom_macro 中访问它。但是,我认为明确声明 geom_macro 使用 ax 会更清晰,而且,通过将其作为一个论点,您可以使 geom_macro 更可重用——也许在某些时候您会想要使用更多一个子图,然后有必要指定您希望geom_macro 在哪个轴上绘制。

【讨论】:

非常感谢,效果非常好!并感谢您对明确说明在 geom_macro 上使用 ax 的优势的额外评论。谢谢!

以上是关于如何在 matplotlib 中的另一个图之上添加一个图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 matplotlib blitting 将 matplot.patches 添加到 wxPython 中的 matplotlib 图?

如何在matplotlib中的给定图上绘制垂直线

Python-Matplotlib可视化——多方面自定义统计图绘制

matplotlib 中的 3D PCA:如何添加图例?

如何在 Matplotlib 中为子图添加标题

matplotlib 中的反向颜色图