这可能是一个非常天真的问题,但我找不到明确的指示如何做到这一点。我在matplotlib中尝试做的是:
我想做类似的事情:
x = rand(10)
y = rand(10)
p = plot(x,y, '.', label="x:y")
# other code, possibly a new cell in the notebook
a = rand(10)
b = rand(10)
p.plot(a,b, '--', label="a:b") # error. what do I do to add a layer here?
最终的图应包含(x,y)和(a,b)数据。
我对一堆子图不感兴趣(每个例子似乎都有这些)我想在pylab图中做上述操作(在IPython笔记本中)。
谢谢!
答案 0 :(得分:1)
您的问题是plot
返回的内容不是绘制内容的实际对象,而是您尝试使用它的内容。因此,您需要将p定义为实际上要绘制内容的对象。
import pylab as py
from numpy.random import rand
x = rand(10)
y = rand(10)
p = py.gca()
p.plot(x,y, '.', label="x:y")
# other code, possibly a new cell in the notebook
a = rand(10)
b = rand(10)
p.plot(a,b, '--', label="a:b")
事实上,在您的原始代码中,如果您刚刚删除了第二个绘图命令中的p.
,那么您将获得我认为您所追求的内容。
答案 1 :(得分:0)
我解决此问题的一种方法是按如下方式创建您的图形和轴:
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2,3],[1,2,3])
在此处根据需要设置图形参数,最后调用show但使用block = False
plt.show(block=False)
然后从其他函数中,您可以使用Matplotlibs plt.gca()函数添加到同一轴,该函数返回用户当前或最后点击的轴,如下所示(但不要创建新的图形或轴)并使用Matplotlibs draw()函数:
plt.gca().plot([4,5,6],[4,5,6])
plt.draw()