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

时间:2013-07-11 21:17:20

标签: python matplotlib user-defined-functions

我有两个数据文件: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 个答案:

答案 0 :(得分:4)

致电

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 {1}}无论如何。但是,我认为明确说明ax使用geom_macro更为清晰,而且,通过使其成为一个参数,您可以使geom_macro更具可重用性 - 也许在某些时候您会想要使用多个子图,然后需要指定您希望{{1}}绘制哪个轴。