使用matplotlib绘制3D时无法正常绘制
在pycharm上运行这段代码,没有报错,但是figure里面是白的,想问问为什么{:10_266:}import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
#定义一个图像窗口,在窗口上添加3D坐标轴
fig = plt.figure()
ax = Axes3D(fig)
# X, Y value
#给进 X 和 Y 值,并将 X 和 Y 编织成栅格。
# 每一个(X, Y)点对应的高度值我们用下面这个函数来计算
#0.25是步长
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y) # x-y 平面的网格
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.sin(R)
#做出一个三维曲面,并将一个 colormap rainbow 填充颜色,
# 之后将三维图像投影到 XY 平面上做一个等高线图。
# 其中,rstride 和 cstride 分别代表 row 和 column 的跨度。
# 跨度越小,图形上的网格越密集
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'),edgecolor='black')
plt.show() import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
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)
Z = np.sin(R)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'), edgecolor='black')
plt.show()
这里我们做了两个修改:
在定义图形对象fig时只定义了一次,可以省略第二次定义。
用add_subplot()方法代替了Axes3D()方法,来创建3D图形子图。 {:5_106:} 月下孤井 发表于 2023-2-16 14:27
import numpy as np
import matplotlib.pyplot as plt
可以了,谢谢!那请问为啥不能用Axes3D()方法呢?
页:
[1]