当我想在同一个地块上挖出多行时,我可以根据需要多次调用pyplot.plot(x,y)
,然后用pyplot.show()
显示情节。但是,当我定义一个要绘制的函数时,我多次调用该函数,而不是在同一个图上有多行,我会得到多个图。例如:
import numpy as np
import matplotlib.pyplot as plt
def plotsub(x, y):
plt.plot(x, y)
plt.show()
x = np.arange(0,10,1);
y = x*x
plt.plot(x,y)
plt.plot(x*10,y)
plt.show()
plotsub(x,y)
plotsub(x*10,y)
但是,我希望对plotsub
的两次调用与多次调用plt.plot
的行为一样。
基本上,我试图获取pyplot的句柄,将其作为参数发送给函数,我找不到该怎么做。
答案 0 :(得分:2)
这是因为您的plt.show()
功能中有plotsub
。因此,每次调用plotsub
时,matplotlib都会按预期显示该图。
如果您只想在调用plotsub
后显示情节,则可以将其移到该功能之外:
import numpy as np
import matplotlib.pyplot as plt
def plotsub(x, y):
plt.plot(x, y)
x = np.arange(0,10,1);
y = x*x
plotsub(x,y)
plotsub(x*10,y)
plt.show()
或者,您可以将其保留在函数内部,但将其设置为可选,因此您只能在最后一次调用plotsub
时显示。类似的东西:
import numpy as np
import matplotlib.pyplot as plt
def plotsub(x, y, show=False):
plt.plot(x, y)
if show:
plt.show()
x = np.arange(0,10,1);
y = x*x
plotsub(x, y)
plotsub(x*10, y, show=True)
最后,要获得对您在函数中绘制的线的引用,您可以return
来自函数,例如:
def plotsub(x, y, show=False):
line, = plt.plot(x, y)
if show:
plt.show()
return line
l1 = plotsub(x, y)