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