Rob*_*bby 4 python matplotlib calculus python-3.x
问候问题:
R是由抛物线y = x ^ 2 + 1和线y = x + 3界定的xy平面中的区域.通过围绕x轴旋转R形成旋转实体.我需要在2D和实心革命3D中绘制抛物线和直线,如何做?我安装了anaconda.
你可以使用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()
Run Code Online (Sandbox Code Playgroud)
要使用plot_surface您绘制曲面,首先要确定两个1维参数,u然后v:
u = np.linspace(-1, 2, 60)
v = np.linspace(0, 2*np.pi, 60)
Run Code Online (Sandbox Code Playgroud)
使得x,y,z是参数的功能u和v:
x = x(u, v)
y = y(u, v)
z = z(u, v)
Run Code Online (Sandbox Code Playgroud)
要注意的ax.plot_surface是它的前三个参数必须是2D数组.因此我们使用np.meshgrid来创建坐标矩阵(U和V)总分坐标向量(u和v),并定义二维数组X,Y,Z为的功能U和V:
X = U
Y1 = (U**2 + 1)*np.cos(V)
Z1 = (U**2 + 1)*np.sin(V)
Run Code Online (Sandbox Code Playgroud)
有关坐标矩阵的每个位置U和V,对于一个对应的值X和Y与Z.这将创建从2维uv空间到3维xyz空间的映射.对于uv空间中的每个矩形,我们的表面上都有一个xyz空间.所绘制的曲面plot_surface由这些平面构成.
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |