2016-03-29 14 views
3

Ich versuche, ein Diagramm in Python zu erstellen. Ich versuche jedoch, dies über einen Zeitraum von 250 Tagen zu tun, und versuche, einen Befehl while zu verwenden, um bis zu t < 250 zu iterieren.Iterieren und Plotten in Python?

Dies funktioniert jedoch aus irgendeinem Grund nicht. Während ich Matplotlib importiert habe, bin ich außerdem nicht sehr vertraut mit der Darstellung des Graphen (der sowieso keine Daten hätte, wenn der Code nicht iteriert), sondern die Tage und den Preis auf der X- und Y-Achse ausstreichen möchte so dass es korrekt angezeigt wird und Zahlen nicht zusammengebündelt sind usw.

Ich versuche immer noch, dies zu lösen, wäre aber sehr dankbar für jeden zusätzlichen Input.

Antwort

1

Was Sie fehlten, war ein Vektor der x -Werte, eigentlich t -Werte. Zweitens nur numpy nicht math ermöglicht es Ihnen, vectorize eine Funktion, also wenn die Eingabe ein Vektor ist, dann macht die Funktion eine Auswertung für jeden Eingabewert und gibt einen Vektor zurück.

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

Vielen Dank. Ich habe eine Follow-up-Frage, wenn ich darf; Ich benutze das IPython-Programm, um das oben genannte auszuführen (das ich vorher verwendet habe und die Graphen angezeigt habe). Wenn ich den Code z. plt.plot (t, s1), ich erhalte nur eine Ausgabenachricht, die [] sagt. Das Diagramm selbst wird nicht angezeigt. Irgendwelche Ideen? – percy

+0

UPDATE: Gelöst mit plt.show() am Ende. – percy

+0

Das hängt von Ihrer Umgebung ab. In Ipython (jupyter) benötigen Sie in den meisten Fällen keine plt.show(). Plot erscheint jedoch in einem separaten Fenster. Ich verwende meistens Inline-Plots '% matplotlib inline' oder'% pylab inline'. – roadrunner66

0

Ich kann sofort ein großes Problem mit dem Skript sehen. Es wäre besser, t und s1 als numpige Arrays im Voraus zu berechnen.

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

Sowohl t als auch s1 sind jetzt nummerische Arrays. Mit diesem können Sie das Grundstück leicht machen

plt.plot(t,s1) # line plot 

Sobald Sie das haben, können Sie Glocken und Pfeifen hinzufügen, wie Sie möchten.

Was in Ihrem Skript implementiert ist, ist, dass ein Punkt (t, s1) geplottet wird und dieser durch den nächsten Punkt (t, s1) usw. durch die while-Schleife ersetzt wurde.