Python Matlibplot似乎无法正确输入

1 投票
1 回答
29 浏览
提问于 2025-04-14 18:18

我想在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')

撰写回答