matplotlib中Axes3D导入语句失效,如何在Python中绘制3D图形?
在Python中绘制3D图形的最新方法(替代已弃用的Axes3D)
matplotlib 3.4+版本已移除mpl_toolkits.mplot3d.Axes3D的显式导入要求,现在只需在创建子图时指定projection='3d'参数即可创建3D坐标轴,避免你遇到的AttributeError问题。
基础3D坐标轴创建示例
import matplotlib.pyplot as plt # 创建画布和3D子图 fig = plt.figure() ax = fig.add_subplot(projection='3d') # 设置坐标轴标签 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') plt.show()
常用3D绘图示例
1. 3D散点图
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(projection='3d') # 生成随机样本数据 x = np.random.rand(100) y = np.random.rand(100) z = np.random.rand(100) # 绘制散点图,指定颜色和标记样式 ax.scatter(x, y, z, c='darkorange', marker='^') ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
2. 3D曲面图
import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.add_subplot(projection='3d') # 生成网格数据 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) # 绘制曲面并指定配色方案 surf = ax.plot_surface(X, Y, Z, cmap='coolwarm') # 添加颜色条映射数值 fig.colorbar(surf, shrink=0.5, aspect=5) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
版本兼容提示
如果你的matplotlib版本低于3.4,可能仍需导入Axes3D以启用3D功能,但强烈建议升级到最新稳定版解决兼容性问题,升级命令:
pip install --upgrade matplotlib
内容的提问来源于stack exchange,提问作者QianruZhou
相关产品推荐
相关产品推荐

