我想绘制一个sin函数并显示它,然后再添加一个cos函数和绘图,这样输出就是两个图,第一个只有sin,第二个是sin和cos。但show()冲洗了情节,我该如何防止冲洗?
import numpy as np
import matplotlib.pyplot as plt
f1 = lambda x: np.sin(x)
f2 = lambda x: np.cos(x)
x = np.linspace(1,7,100)
y1 = f1(x)
y2 = f2(x)
plt.plot(x,y1)
plt.show() #can I avoid flushing here?
plt.plot(x,y2)
plt.show()
我需要一个jupyter笔记本。
答案 0 :(得分:1)
建议以面向对象的方式进行。
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
import time
f1 = lambda x: np.sin(x)
f2 = lambda x: np.cos(x)
x = np.linspace(1,7,100)
y1 = f1(x)
y2 = f2(x)
f,ax = plt.subplots() # creating the plot and saving the reference in f and ax
ax.plot(x,y1)
f.canvas.draw()
time.sleep(1) # delay for when to add the second line
ax.plot(x,y2)
f.canvas.draw()
编辑: 注意到你需要它在jupyter笔记本中,我发布的第一个解决方案没有在那里工作,但现在发布的那个确实如此。使用f.canvas.draw()而不是plt.show()。
答案 1 :(得分:0)
使用子剧情即
import numpy as np
import matplotlib.pyplot as plt
f1 = lambda x: np.sin(x)
f2 = lambda x: np.cos(x)
x = np.linspace(1,7,100)
y1 = f1(x)
y2 = f2(x)
#define 2-plots vertically, 1-plot horizontally, and select 1st plot
plt.subplot(2,1,1)
plt.plot(x,y1)
#As above but select 2nd plot
plt.subplot(2,1,2)
#plot both functions
plt.plot(x,y1)
plt.plot(x,y2)
#show only once for all plots
plt.show()