陈落轩 发表于 2023-2-11 13:20:03

使用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()

月下孤井 发表于 2023-2-11 13:20:04

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图形子图。

woshizhangpengp 发表于 2023-2-12 23:03:27

{:5_106:}

陈落轩 发表于 2023-2-16 17:14:14

月下孤井 发表于 2023-2-16 14:27
import numpy as np
import matplotlib.pyplot as plt



可以了,谢谢!那请问为啥不能用Axes3D()方法呢?
页: [1]
查看完整版本: 使用matplotlib绘制3D时无法正常绘制