2017-11-13 8 views
0

sin関数をプロットして表示し、次にcos関数とプロットを追加して、出力が2つのプロットになるようにします。 cos。しかしshow()はプロットをフラッシュしますが、どのようにしてフラッシュを防ぐことができますか?pyplotでプロットするラインを追加する

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

私はジュピターノートブックで必要です。

+0

次の2つのプロットは、右たいので、次の2つのplt.show()を持っていますか?彼らは同じノートブックのセルにいなければなりませんか? ( plt.plot(X、Y1) plt.plot: セル1: plt.plot(X、Y1) plt.show() セル2あなたは、異なる細胞からそれらをプロットすることで問題を回避することができX、Y2) plt.show() あなたがサブプロットを使用する必要が2つのプロットしたくない場合は、次の をhttps://matplotlib.org/devdocs/api/_as_gen/matplotlib.pyplot.subplots.html – Djib2011

+0

です2つの数字を出力するか、その内容を変更する1つの数字を持つことを目指していますか? – ImportanceOfBeingErnest

答えて

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ノートでそれを必要と気づいたと私は掲示最初のソリューションが動作しませんでしたが、投稿1は現在ありません。 plt.show()の代わりにf.canvas.draw()を使用します。

+0

'f1 = np.sin'だけではないのはなぜですか? – chthonicdaemon

+0

@chthonicdaemon確かに、この質問の焦点はプロット部分でした。 –

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() 
関連する問題