在matplotlib中添加数据层

时间:2015-01-30 00:59:35

标签: python matplotlib

这可能是一个非常天真的问题,但我找不到明确的指示如何做到这一点。我在matplotlib中尝试做的是:

  1. 做一些计算
  2. 创建图形或轴对象?
  3. 向对象添加数据,将其绘制
  4. 做一些更多的计算
  5. 将新数据作为新图层添加到对象(不扩展现有数据,但有新行/散点图)
  6. 我想做类似的事情:

    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笔记本中)。

    谢谢!

2 个答案:

答案 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()