Matplotlib绘制3D图(面向对象)

import numpy as np
import matplotlib.pyplot as plt

# 第一步:创建 3D图像 对象ax
fig = plt.figure(figsize=(12, 6)) # 创建一个大小为12*6的绘图空间
ax = fig.add_subplot(211, projection='3d') # 将绘图空间分成两行一列,且在第一行绘制一个3D图像。

# 第二步:把X Y Z指定好
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# 第三步:开始绘制3D图像(如果添加label出现错误时,才用到“p1 = ”) + 图像注释
p1 = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
                    linewidth=0, antialiased=False, label='sanwei')

#p1._facecolors2d = p1._facecolor3d # 如果添加label出现错误时,则启用
#p1._edgecolors2d = p1._edgecolor3d #如果添加label出现错误时,则启用
ax.legend() # 使“label='sanwei'”生效 且能控制图注释位置(比如左上角、右上角等等)

# 第四步:添加标题、标签等等 + 显示图像
ax.set_title('World population') # 设置标题
ax.set_xlabel('Year')           # 设置X轴标签
ax.set_ylabel('Number of people (millions)') # 设置Y轴标签

plt.show()

结果如下图:
Matplotlib绘制3D图(面向对象)_第1张图片

注意:添加3D图的右上角注释时有的会出错:
AttributeError: ‘Poly3DCollection’ object has no attribute ‘_facecolors2d’
AttributeError: ‘Poly3DCollection’ object has no attribute ‘_edgecolors2d’
Matplotlib绘制3D图(面向对象)_第2张图片
改为如下代码就能显示了。

p1 = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
                    linewidth=0, antialiased=False, label='sanwei')

p1._facecolors2d = p1._facecolor3d 
p1._edgecolors2d = p1._edgecolor3d 

你可能感兴趣的:(Matplotlib,matplotlib,3d,python)