使用 Sympy 更改 3d 图中的轴刻度

Changing axis scale in 3d plot with Sympy

使用 Sympy 更改 3D 绘图的轴比例或轴限制的最简单方法是什么?例如,如果我想绘制一个环面:

from sympy import *
from sympy.plotting import *

u, v = symbols('u v')
p = plot3d_parametric_surface((5 + cos(u))*cos(v), (5 + cos(u))*sin(v), sin(u),
                              (u, 0, 2*pi), (v, 0, 2*pi))

我们得到

但我想要这样的东西:

我用 numpy/matplotlib.pyplot 做了最后一张图片,但我想用 Sympy 做的尽可能简单...

您必须访问 Sympy 创建的 Matplotlib 轴对象,如下所示:

from sympy import *
from sympy.plotting import *
import numpy as np

u, v = symbols('u v')
p = plot3d_parametric_surface((5 + cos(u))*cos(v), (5 + cos(u))*sin(v), sin(u),
                              (u, 0, 2*pi), (v, 0, 2*pi))
p._backend.ax[0].set_box_aspect(aspect = (1,1,0.2))
ticks = np.linspace(-1, 1, 3)
p._backend.ax[0].set_zticks(ticks, ticks)
# show the figure
p._backend.fig