您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

绘制Python 3的革命基础(也许是matplotlib)

绘制Python 3的革命基础(也许是matplotlib)

您可以使用plot_surface

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d.axes3d as axes3d

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')

u = np.linspace(-1, 2, 60)
v = np.linspace(0, 2*np.pi, 60)
U, V = np.meshgrid(u, v)

X = U
Y1 = (U**2 + 1)*np.cos(V)
Z1 = (U**2 + 1)*np.sin(V)

Y2 = (U + 3)*np.cos(V)
Z2 = (U + 3)*np.sin(V)

ax.plot_surface(X, Y1, Z1, alpha=0.3, color='red', rstride=6, cstride=12)
ax.plot_surface(X, Y2, Z2, alpha=0.3, color='blue', rstride=6, cstride=12)
plt.show()

在此处输入图片说明

要使用plot_surface您绘制表面,首先要确定两个一维参数,uv

u = np.linspace(-1, 2, 60)
v = np.linspace(0, 2*np.pi, 60)

使得xyz是参数的功能uv

x = x(u, v)
y = y(u, v)
z = z(u, v)

需要注意的ax.plot_surface是,它的前三个参数必须是2D数组。因此我们使用np.meshgrid来创建坐标矩阵(UV)总分坐标向量(uv),并定义二维数组XYZ为的功能UV

X = U
Y1 = (U**2 + 1)*np.cos(V)
Z1 = (U**2 + 1)*np.sin(V)

有关坐标矩阵的每个位置UV,对于一个对应的值XYZ。这将创建一个从2维uv空间到3维xyz间的映射。对于uv-space中的每个矩形,-space中的表面都有一个xyz。绘制的曲面plot_surface由这些平面组成。

python 2022/1/1 18:47:33 有336人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶