关于#python#的问题:我想问一下 为什么我的电脑不会显示出3d图形

我想问一下 为什么我的电脑不会显示出3d图形,只有空白


import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
# X, Y value
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.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'))
#zdir 等高线沿z轴 offset 将等高线图放到沿该轴距离为-2的面上
ax.set_zlim(-2, 2)

plt.show()

img

你在 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow')) 前面加上一句

ax=plt.axes(projection='3d')

或者是加

ax = fig.gca(projection='3d')

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D    #这里只是用Axes3D函数,所以只导入了Axes3D
fig=plt.figure()
ax=Axes3D(fig)
x=np.arange(-8,8,0.25)     # 生成数据
y=np.arange(-8,8,0.25)
x,y=np.meshgrid(x,y)   #生成x,y轴数据
r=np.sqrt(x**2+y**2)
z=np.sin(r)/r                 #生成z值
ax.plot_surface(x,y,z,rstride=1,cstride=1)
ax.contourf(x,y,z,zdir='z',offset=-2)
plt.show()