python 中的曲面图
Surface plot in python
我用谷歌搜索了这个问题,发现:
surface plots in matplotlib
但将其应用于我的问题时却感到非常困惑。我也查看了 matplotlib 网站,但很难弄清楚参数。
我目前有一个矩阵 U,其中每一行 i 是由于时间 i 的特定股票价格而导致的看跌期权的价值。例如。 U[0,0] 是股票价格为 0 时 0 时期权的价值 U[1,0] 是股票价格为 0 时 1 时期权的价值 U[1,1]是股票价格为第一个节点时期权在时间 1 的价值。
我想要一个 3d 图,即显示期权价值随时间随股价的变化。
X轴:股价
Y 轴:选项值
Z轴:时间。
有人可以帮帮我吗?
谢谢,
詹姆斯
首先,您需要创建 Z 和 X 坐标,它们是矩阵的索引。您可以使用 matrix.shape
获取矩阵的大小,然后使用 meshgrid
创建坐标网格。然后就可以从每组(z,x)坐标对应的矩阵中取值,放入Y中。
例如:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
matrix = np.array([[0, 1, 2, 3, 4], [.5, 1.5, 2.5, 3.5, 4.5], [1, 2, 3, 4, 5]])
z, x = matrix.shape
Z = np.arange(0, z, 1)
X = np.arange(0, x, 1)
Z, X = np.meshgrid(Z, X)
Y = matrix[Z, X]
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
linewidth=0, antialiased=False, cmap = cm.coolwarm)
plt.show()
我用谷歌搜索了这个问题,发现: surface plots in matplotlib 但将其应用于我的问题时却感到非常困惑。我也查看了 matplotlib 网站,但很难弄清楚参数。
我目前有一个矩阵 U,其中每一行 i 是由于时间 i 的特定股票价格而导致的看跌期权的价值。例如。 U[0,0] 是股票价格为 0 时 0 时期权的价值 U[1,0] 是股票价格为 0 时 1 时期权的价值 U[1,1]是股票价格为第一个节点时期权在时间 1 的价值。
我想要一个 3d 图,即显示期权价值随时间随股价的变化。
X轴:股价 Y 轴:选项值 Z轴:时间。
有人可以帮帮我吗? 谢谢, 詹姆斯
首先,您需要创建 Z 和 X 坐标,它们是矩阵的索引。您可以使用 matrix.shape
获取矩阵的大小,然后使用 meshgrid
创建坐标网格。然后就可以从每组(z,x)坐标对应的矩阵中取值,放入Y中。
例如:
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
matrix = np.array([[0, 1, 2, 3, 4], [.5, 1.5, 2.5, 3.5, 4.5], [1, 2, 3, 4, 5]])
z, x = matrix.shape
Z = np.arange(0, z, 1)
X = np.arange(0, x, 1)
Z, X = np.meshgrid(Z, X)
Y = matrix[Z, X]
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
linewidth=0, antialiased=False, cmap = cm.coolwarm)
plt.show()