2016-03-29 11 views
3

私はPythonでグラフを作成しようとしています。しかし、私はこれを250日間にわたって実行しようとしており、whileコマンドを使用してtまで< 250まで反復しようとしています。Pythonでの反復とグラフのプロット?

ただし、これは何らかの理由で機能しません。さらに、私はmatplotlibをインポートしたが、グラフをプロットする方法(コードが反復処理されていないとデータを持たない)に慣れていないが、x軸とy軸の日と価格したがって、正しく表示され、数字は一緒に束ねられません。

私はまだこれを解決しようとしていますが、追加の入力には非常に感謝しています。

答えて

1

実際にt値のx値のベクトルが欠けていました。第2にnumpyだけではなくmathは関数vectorizeを許可します。したがって、入力がベクトルの場合、関数は各入力値の評価を行い、ベクトルを返します。

from __future__ import division 
import numpy as np 
import matplotlib.pyplot as plt 


mu = 0.09 
v = 0.15 
s0 = 500 
#Expected return k (per year), k = mu-(v**2)/2 
k = mu-(v**2)/2 

t=np.arange(0,250) 

#Simulation 
s1 = s0*np.exp(k*t/250+v*s0*np.sqrt(t/250)) 
plt.figure(figsize=(10, 6), dpi=80) 

plt.plot(t,s1) 

plt.xlim(0.0, 250.0) 
plt.xticks(np.linspace(0, 250, 11, endpoint=True)) 
#plt.ylim(0, 10000) 
# plt.yticks(np.linspace(00, 10000, 10, endpoint=True)) 

plt.title(r'Stock Returns') 

enter image description here

+0

多くのありがとうございます。私はもしかするとフォローアップの質問があります。私は上記を実行するためにIPythonプログラムを使用しています(前に使用してグラフを表示しました)。ただし、コードを実行するとplt.plot(t、s1)、出力メッセージに[]というメッセージが表示されます。グラフ自体は実際には表示されません。何か案は? – percy

+0

UPDATE:最後にplt.show()を使用して解決しました。 – percy

+0

これはお使いの環境によって異なります。 Ipython(jupyter)では、ほとんどの場合、plt.show()は必要ありません。プロットは別ウィンドウでポップアップします。私はたいていインラインプロット '%matplotlib inline'または'%pylab inline'を使います。 – roadrunner66

0

私はすぐにスクリプトを使って一つの大きな問題を見ることができます。あらかじめnumpy配列としてtとs1を計算するほうがよいでしょう。

t = np.arange(250) 
s1 = s0*np.exp(k*t/250+v*s0*np.sqrt(t/250)) 

tとs1の両方がnumpyの配列になりました。これで簡単にプロットすることができます

plt.plot(t,s1) # line plot 

あなたが好きなように鐘や笛を加えることができたら、それを得ることができます。

スクリプトでは、1点(t、s1)がプロットされ、次の点(t、s1)に置き換えられます。