如何在 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 图?