#|3D绘图&ax.plot_surface()

下面代码来自:Python plot_surface(Axes3D)方法:绘制3D图形

# -*- coding: utf-8 -*- """ Created on Mon Oct7 21:57:52 2019@author: qwy """import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D fig = plt.figure(figsize=(12, 8)) ax = Axes3D(fig) ''' fig = plt.figure(figsize=(12, 8)) ax = fig.gca(projection='3d') '''delta = 0.125 # 生成代表X轴数据的列表 x = np.arange(-3.0, 3.0, delta) # 生成代表Y轴数据的列表 y = np.arange(-2.0, 2.0, delta) # 对x、y数据执行网格化 X, Y = np.meshgrid(x, y) Z1 = np.exp(-X**2 - Y**2) Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2) # 计算Z轴数据(高度数据) Z = (Z1 - Z2) * 2 # 绘制3D图形 surf = ax.plot_surface(X, Y, Z, rstride=1,# rstride(row)指定行的跨度 cstride=1,# cstride(column)指定列的跨度 cmap=plt.get_cmap('rainbow'))# 设置颜色映射 # 设置Z轴范围 ax.set_zlim(-2, 2) # 设置标题 plt.title("3D图") fig.colorbar(surf, shrink=0.5, aspect=5) plt.show()

#|3D绘图&ax.plot_surface()
文章图片

  • 3D 图形需要的数据与等高线图基本相同:X、Y 数据决定坐标点,Z 轴数据决定 X、Y 坐标点对应的高度。与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度。
  • 为了绘制 3D 图形,需要调用 Axes3D 对象的 plot_surface()方法来完成。
  • 关于plot_surface参数,如下:
参数 描述
X,Y,Z 2D数组形式的数据值
rstride 数组行距(步长大小)
cstride 数组列距(步长大小)
color 曲面块颜色
cmap 曲面块颜色映射
facecolors 单独曲面块表面颜色
norm 将值映射为颜色的 Nonnalize实例
vmin 映射的最小值
vmax 映射的最大值
关于3D绘图的应用1:
下面代码来自:python金融大数据分析笔记----第五章(数据可视化)3 —【金融学图表】
from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif']='Lisu' plt.rcParams['axes.unicode_minus']=Falsestrike = np.linspace(50, 150, 24) ttm = np.linspace(0.5, 2.5, 24) strike, ttm = np.meshgrid(strike, ttm) iv = (strike - 100) ** 2 / (100 * strike) / ttm # generate fake implied volatilitiesfig = plt.figure(figsize=(9, 6)) ax = fig.gca(projection='3d')'''同上面两行代码 fig = plt.figure(figsize=(12, 8)) ax = Axes3D(fig) '''surf = ax.plot_surface(strike, ttm, iv, rstride=2, cstride=2, cmap=plt.cm.coolwarm, linewidth=0.5, antialiased=True) ax.set_xlabel('strike') ax.set_ylabel('time-to-maturity') ax.set_zlabel('implied volatility') fig.colorbar(surf, shrink=0.5, aspect=5)

【#|3D绘图&ax.plot_surface()】#|3D绘图&ax.plot_surface()
文章图片

  • 另外,关于Matplotlib.pyplot 三维绘图,可点击此处

    推荐阅读