我用谷歌搜索了这个问题并发现: 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轴:时间。
有人可以帮我吗? 谢谢, 詹姆斯
答案 0 :(得分:2)
首先,您需要制作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()