在一个图像上用python绘制多个图形
我在画股票价格,它是按照几何布朗运动演变的。你不需要理解数学,我已经处理好了。但是,我的情节不是我想要的。他们太纠结在一起了 出于某种原因,它添加了这些直线,我认为这可能是最合适的直线,但我根本看不出它来自我的代码 这是我的python代码。有什么建议可以帮我更好地辨别路径吗, 去掉那些直线在一个图像上用python绘制多个图形,python,Python,我在画股票价格,它是按照几何布朗运动演变的。你不需要理解数学,我已经处理好了。但是,我的情节不是我想要的。他们太纠结在一起了 出于某种原因,它添加了这些直线,我认为这可能是最合适的直线,但我根本看不出它来自我的代码 这是我的python代码。有什么建议可以帮我更好地辨别路径吗, 去掉那些直线 from scipy.stats import norm from scipy import sqrt import matplotlib.pyplot as plt def Euler_disc(S0,
from scipy.stats import norm
from scipy import sqrt
import matplotlib.pyplot as plt
def Euler_disc(S0, mu, sigma, T, n):
times = [0]
stocks = [S0]
dt = ((float(T)/n))
for i in range(0, 10):
for x in range(0, n):
times.append(times[x] + dt)
stocks.append(stocks[x] + mu * stocks[x] * dt \
+ sigma * stocks[x] * sqrt(dt) * norm.rvs(0, 1, 1))
plt.plot(times, stocks)
您正在每个内部循环中重用
times
和stocks
变量。因此,每次你到达plt.plot(时间,股票),你都会回复你所有的计算数据
以下是固定版本:
from scipy.stats import norm
from scipy import sqrt
import matplotlib.pyplot as plt
def Euler_disc(S0, mu, sigma, T, n):
dt = ((float(T)/n))
for i in range(0, 10):
times = [0]
stocks = [S0]
for x in range(0, n):
times.append(times[x] + dt)
stocks.append(stocks[x] + mu * stocks[x] * dt \
+ sigma * stocks[x] * sqrt(dt) * norm.rvs(0, 1, 1))
plt.plot(times, stocks)
之所以画这些线,是因为您的数据顺序不正确。Matplotlib不会对数据点进行排序,而是一个接一个地绘制,将每个点与上一个点连接起来。因此,如果在最后一个点之后返回到例如
0,0
,则从最后一个点到0,0
将有一条直线。您使用i
循环的目的是什么?绘制stockNice渔获物的十条路径。尽管如此,您不需要最后一行,因为我希望每个图表从相同的股票价值开始。我画了两种方式,我想要没有最后一行的版本。好的,我删除了它。我刚刚注意到这里有一个随机分量,我刚才问自己“他为什么要画10次同一条线?”。现在说得通了!