使用 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
使用 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