Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用symphy中的参数图绘制等轴理想球面_Python_Matplotlib_Sympy_Aspect Ratio - Fatal编程技术网

Python 用symphy中的参数图绘制等轴理想球面

Python 用symphy中的参数图绘制等轴理想球面,python,matplotlib,sympy,aspect-ratio,Python,Matplotlib,Sympy,Aspect Ratio,我想知道如何在Symphy中使用plot3d_参数曲面绘制完美球体。我所说的完美是指轴相等。此函数的结果为椭圆形 from sympy import * from sympy.plotting.plot import plot3d_parametric_surface from sympy.abc import theta , phi plot3d_parametric_surface(sin(phi)*cos(theta) , sin(phi)*sin(theta), cos(phi), (p

我想知道如何在Symphy中使用plot3d_参数曲面绘制完美球体。我所说的完美是指轴相等。此函数的结果为椭圆形

from sympy import *
from sympy.plotting.plot import plot3d_parametric_surface
from sympy.abc import theta , phi
plot3d_parametric_surface(sin(phi)*cos(theta) , sin(phi)*sin(theta), cos(phi), (phi,0,pi),(theta,0,2*pi))


我试图把答案落实到计划中,但没有成功

主要问题之一是
ax.set\u aspect('equal')
仍在matplotlib中。matplotlib(3.1)的当前版本在调用
set_aspect('equal')
时会立即引发显式错误。旧版本给出了一个非常错误的投影,尽管用户通常没有意识到错误。关于在3D中设置相等纵横比的其他StackOverflow答案只是将xyz限制设置为相等,这样可以使您更接近所需的结果,但不是完全相等的投影

解决方法是手动设置地物轴,直到球体具有所需的纵横比。这很麻烦,因为打印尺寸包括轴标签和填充的空间

例如,将figsize设置为
6,5.6
似乎效果不错

从sympy导入sin、cos、pi
从sympy.plotting.plot导入plot3d\u参数化曲面
从sympy.abc导入θ,φ
将matplotlib.pyplot作为plt导入
plt.rcParams['figure.figsize']=6,5.6
plot3d参数曲面(sin(phi)*cos(θ),sin(phi)*sin(θ),cos(phi),
(φ,0,π),(θ,0,2*π))

插入一个不可见的框(如果您没有绘制球体),只需一条对角线即可:

从sympy导入sin、cos、pi
从sympy.plotting.plot导入plot3d\u参数化曲面,plot3d\u参数化线
从sympy.abc导入θ、φ、t
将matplotlib.pyplot作为plt导入
plt.rcParams['figure.figsize']=6,5.6
p1=绘图3D参数曲面(正弦(φ)*cos(θ),正弦(φ)*sin(θ),cos(φ),
(φ,0,pi),(θ,0,2*pi),show=False)
p2=绘图三维参数线(t,t,t,(t,-1,1),线颜色为“无”,显示为假)
p1.追加(p2[0])
#p1.backend(p1.ax[0]。set_aspect('equal')#这会引发NotImplementedError
p1.show()