gpt4 book ai didi

python - 使用 Matplotlib 绘制椭圆体

转载 作者:太空狗 更新时间:2023-10-29 17:54:33 24 4
gpt4 key购买 nike

有人有绘制椭球体的示例代码吗? matplotlib 站点上有一个球体,但没有椭圆体。我正在尝试绘制

x**2 + 2*y**2 + 2*z**2 = c

其中 c 是定义椭圆体的常量(如 10)。我尝试了 meshgrid(x,y) 路线,修改了方程式,因此 z 在一侧,但 sqrt 是个问题。 matplotlib sphere example works with angles, u,v,但我不确定如何为椭圆体工作。

最佳答案

这是通过球坐标实现的方法:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=plt.figaspect(1)) # Square figure
ax = fig.add_subplot(111, projection='3d')

coefs = (1, 2, 2) # Coefficients in a0/c x**2 + a1/c y**2 + a2/c z**2 = 1
# Radii corresponding to the coefficients:
rx, ry, rz = 1/np.sqrt(coefs)

# Set of all spherical angles:
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)

# Cartesian coordinates that correspond to the spherical angles:
# (this is the equation of an ellipsoid):
x = rx * np.outer(np.cos(u), np.sin(v))
y = ry * np.outer(np.sin(u), np.sin(v))
z = rz * np.outer(np.ones_like(u), np.cos(v))

# Plot:
ax.plot_surface(x, y, z, rstride=4, cstride=4, color='b')

# Adjustment of the axes, so that they all have the same span:
max_radius = max(rx, ry, rz)
for axis in 'xyz':
getattr(ax, 'set_{}lim'.format(axis))((-max_radius, max_radius))

plt.show()

结果图类似于

enter image description here

上面的程序实际上生成了一个更好看的“方形”图形。

此解决方案的灵感来自 exampleMatplotlib's gallery .

关于python - 使用 Matplotlib 绘制椭圆体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7819498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com