尝试向现有的Matplotlib图添加其他跟踪

时间:2017-12-20 02:14:03

标签: python matplotlib

我正在使用一个函数来吐出验证数据的图形对象。我的脚本计算了一些模型参数,我想在这个现有的图形对象上绘制。我怎样才能做到这一点?每当我尝试绘制我的建模数据时,它都会在新窗口中显示。这是我的代码的样子:

datafig = plotting_function(args) #Returning a figure object

datafig.show()

plt.plot([modeled_x],[modeled_y]) #Plotting in a new window

我尝试过使用plt.hold()/ plt.hold(True),但这没有做任何事情。有什么想法吗?

编辑:

MCVE:

import matplotlib.pyplot as plt

def fig_create():

    fig_1, ax_1 = plt.subplots()
    ax_1.plot([0,1],[0,1])

    fig_2, ax_2 = plt.subplots()
    ax_2.plot([0,1],[0,5])

    return fig_1, ax_1, fig_2, ax_2

figure_1, axes_1, figure_2, axes_2 = fig_create()
plt.close("all") # Spyder plots even without a plt.show(), so running the function generates figures. I'm closing them here.

figure_2.show()
plt.figure(2)
plt.plot([0,1],[0,10])

MCVE的结果:https://i.imgur.com/FiCJX33.png

2 个答案:

答案 0 :(得分:1)

您需要指定要绘制的轴。无论现有数字是否具有该数字,plt.figure(2)都会生成一个数字为2的数字!但是,axes_2.plot()会将您输入的任何数据直接绘制到axes_2以及已存在的任何数据上。如果没有立即显示,则应在绘图功能之后添加plt.draw()

尽量不要混合plt,符号和斧头符号,因为这会在以后造成混乱!如果你正在使用无花果和斧头,坚持下去!

答案 1 :(得分:0)

您可以在任何plt.figure(my_figure_index)(或任何其他plt.plot绘图功能)调用之前调用plt来指定要绘制的图形。

例如:

plt.figure(10) # creates new figure if doesn't exist yet
plt.plot(...) # plots in figure 10

plt.figure(2) # creates new figure if doesn't exist yet
plt.plot(...) # plots in this figure 2

plt.figure(10) # figure already exists, just makes it the active one
plt.plot(...) # plots in figure 10 (in addition to already existing stuff)