python中的曲面图

时间:2015-08-11 18:22:57

标签: python matplotlib plot surface

我用谷歌搜索了这个问题并发现: 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轴:时间。

有人可以帮我吗? 谢谢, 詹姆斯

1 个答案:

答案 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()