1.问题:
我使用如下代码运用matplotlib中的Axes3D绘画3D图,但是运行出来的结果是空白。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #导入3D包
fig = plt.figure() #窗口
#ax = Axes3D(fig)
# X, Y 数组
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.sin(R)
#画在ax上,rstride、cstride跨度(行列),
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))
# 等高线
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))
#高度范围
ax.set_zlim(-2, 2)
plt.show()
运行结果:
但是正常的结果应该是:
2.解决方法:
我的matplotlib包是3.7.0
解决方法1:降低matplotlib包版本
解决方法2:将ax = Axes3D(fig)
用ax = fig.add_axes(Axes3D(fig))
替换
完美解决!