所以我有曲线 y=1-(x-1)**2 ,其中 x 是 [1,2] 的元素,我想绘制这条线绕 y 轴的旋转曲面。我有点卡住了,在任何地方都没有太多有用的信息。
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
x = np.linspace(1,2,500)
y = np.linspace(0,2*np.pi,500)
U,V = np.meshgrid(x,y)
Y1 = (1-(U-1)**2)*np.cos(V)
Z1 = (1-(U-1)**2)*np.sin(V)
ax.plot_surface(Y1, U, Z1, alpha=0.3, color='red', rstride=6, cstride=12)
ax.view_init(45, 0)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.ylim(-1, 3)
plt.show()
所以我真的不知道如何制作它,所以它符合所要求的内容..这是我第一次问问题
更好的命名约定会对您有所帮助:您所说的 x 实际上是绘图中的半径 r,而您所说的 y 实际上是一个角度 phi。所以你确实有极坐标(在 x-z 平面上),并且
x = r cos(phi)
z = r sin(phi)
y = 1 - (r-1)^2
import numpy as np
import matplotlib.pyplot as plt
r = np.linspace( 1.0, 2.0, 100 )
phi = np.linspace( 0.0, 2 * np.pi, 100 )
R, PHI = np.meshgrid( r, phi )
X = R * np.cos( PHI )
Z = R * np.sin( PHI )
Y = 1 - ( R - 1 ) ** 2
fig = plt.figure()
ax = fig.add_subplot( 1, 1, 1, projection='3d')
ax.plot_surface( X, Y, Z, alpha=0.3, color='red' )
ax.view_init( 45, 45 )
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.ylim(-1, 3)
plt.show()