在matplotlib中添加数据层
Add layers of data in matplotlib
这可能是一个非常幼稚的问题,但我找不到如何执行此操作的明确说明。我想在 matplotlib 中做的是:
- 做一些计算
- 创建图形或轴对象?
- 向对象添加数据,绘制它
- 再做一些计算
- 将新数据添加到对象作为新层(不是扩展现有数据,而是有一个新的line/scatter)
我想做类似的事情:
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 笔记本中)执行上述操作。
谢谢!
你的问题是 plot
returns 不是绘制事物的实际对象,但你正试图将其用作。所以你需要将 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")
事实上,在您的原始代码中,如果您只是删除了第二个 plot 命令中的 p.
,您就会得到我认为您想要的结果。
我解决这个问题的一种方法是按如下方式创建图形和轴:
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() 函数将其他函数添加到同一轴,该函数 returns 用户当前或最后单击的轴,如下所示(但不要创建新图形或轴)并使用 Matplotlibs draw() 函数:
plt.gca().plot([4,5,6],[4,5,6])
plt.draw()
这可能是一个非常幼稚的问题,但我找不到如何执行此操作的明确说明。我想在 matplotlib 中做的是:
- 做一些计算
- 创建图形或轴对象?
- 向对象添加数据,绘制它
- 再做一些计算
- 将新数据添加到对象作为新层(不是扩展现有数据,而是有一个新的line/scatter)
我想做类似的事情:
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 笔记本中)执行上述操作。
谢谢!
你的问题是 plot
returns 不是绘制事物的实际对象,但你正试图将其用作。所以你需要将 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")
事实上,在您的原始代码中,如果您只是删除了第二个 plot 命令中的 p.
,您就会得到我认为您想要的结果。
我解决这个问题的一种方法是按如下方式创建图形和轴:
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() 函数将其他函数添加到同一轴,该函数 returns 用户当前或最后单击的轴,如下所示(但不要创建新图形或轴)并使用 Matplotlibs draw() 函数:
plt.gca().plot([4,5,6],[4,5,6])
plt.draw()