Python Matlibplot似乎无法正确输入
我想在matplotlib
中绘制一个矩阵,第一列的值是100,所以我希望图表的横轴从100开始。然而,图表却从0开始了。
这是我的程序:
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
def ABM(n,m,S0,mu,sigma,dt):
np.random.seed(999)
arr = np.zeros((n, m))
arr[:,0] = S0 #initialize column 0
# fill in array entries
for i in range(n):
for j in range(1, m):
dW = np.random.normal(0, np.sqrt(dt))
arr[i,j] = arr[i, j-1] + mu * dt + sigma * dW
return arr
paths_1 = ABM(n=1000,m=20,S0=100,mu=0,sigma=0.001,dt=1)
print(paths_1)
plt.figure(figsize=(14, 7))
for i in range(n):
plt.plot(paths_1[i])
plt.title('Simulated Arithmetic Brownian Motion Paths')
plt.xlabel('Time Steps')
plt.ylabel('Stock Price')
plt.grid(True)
plt.show()
这是我的输出:
有人能告诉我为什么会这样吗?怎么解决呢?
1 个回答
1
因为你的数据格式,matplotlib
决定把你的数据以科学计数法的形式展示,并且加上一个偏移量。
注意顶部的 "+1e2",这表示 y 轴上的数值要理解为相对于 1e2 的偏移,也就是 100。
如果你不想这样显示,可以添加以下这一行:
plt.gca().ticklabel_format(useOffset=False, axis='y')