python中的曲面图

2024-06-02 08:13:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在谷歌上搜索了这个问题,发现: surface plots in matplotlib 但把它应用到我的问题上却感到非常困惑。我也浏览了matplotlib的网站,但很难找出其中的论据。在

我现在有一个矩阵U,其中每一行I是由于某个股票价格在时间I的看跌期权的价值。E、 g.U[0,0]是股票价格为0时期权的价值。U[1,0]是股票价格为0时期权在时间1的价值。U[1,1]是当股票价格是第一个节点时期权在时间1的价值。在

我想有一个三维绘图,即显示期权价值随时间的变化与股票价格。在

X轴:股价 Y轴:选项值 Z轴:时间。在

谁能帮帮我吗? 谢谢, 詹姆斯


Tags: in绘图节点matplotlib网站时间矩阵surface
1条回答
网友
1楼 · 发布于 2024-06-02 08:13:34

首先,你需要制作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()

相关问题 更多 >