我正在尝试学习 mayavi 来绘制一些 3D 数据。我的 xy 网格通常看起来像这样
import numpy
from mayavi import mlab
x,y = numpy.mgrid[0:90:3j, 0:360:3j]
z= #some calculation
mlab.surf(x, y, z)
mlab.show()
情节看起来像
而使用 gnuplot 的情节看起来像这样
因此,mayavi 图像没有适当的纵横比。如何使用 mayavi 正确绘制数据?
我正在尝试学习 mayavi 来绘制一些 3D 数据。我的 xy 网格通常看起来像这样
import numpy
from mayavi import mlab
x,y = numpy.mgrid[0:90:3j, 0:360:3j]
z= #some calculation
mlab.surf(x, y, z)
mlab.show()
情节看起来像
而使用 gnuplot 的情节看起来像这样
因此,mayavi 图像没有适当的纵横比。如何使用 mayavi 正确绘制数据?
您可以使用这样的extent
参数来处理该问题
import numpy
from mayavi import mlab
x,y = numpy.mgrid[0:90:3j, 0:360:3j]
z= #some calculation
mlab.surf(x, y, z, extent=(0,1,0,1,0,1))
mlab.show()
gnuplot 生成的水平面产生一个跨越 0-90 范围的轴,该轴看起来至少与跨越 0-400 范围的垂直轴的长度相同。考虑到这一事实,我倾向于说 gnuplot 实际上是宽高比错误的那个,考虑到您的目的是有一些类似于 matplotlib 调用的东西ax.set_aspect('equal', adjustable='box')
。此外,surf
具有warp_scale
允许产生垂直夸张的关键字。文档在这里。