使用Mayavi制作3D图形,使用Matplotlib样式的轴

时间:2014-04-12 01:58:18

标签: python matplotlib mayavi

我一直在使用Mayavi进行3D绘图,我可以绘制我想要的散点图,但似乎无法让Axes看起来合适。我发现以下previous question开始了解我之后的内容,但没有详细说明。我想要一个像#1这样的3D散点图,但是看起来像#2这些漂亮的轴(我已经嵌入但我没有足够的声誉)。 常规的Mayavi Axes不会削减它。获得Matplotlib飞机的任何技巧?

1 个答案:

答案 0 :(得分:2)

一旦我们得到"技巧"这实际上非常简单,我已经多次完成了。

'''首先生成mayavi图,然后将其传输到matplotlib窗口,在那里您可以使用所有熟悉的matplotlib工具来制作带有数字,日期,箭头或matplotlib提供的其他部分的轴。在这个代码示例中,我只是放下mayavi'铜球'示例到matplotlib轴集:



import numpy, pylab, mayavi, mayavi.mlab
import matplotlib.pyplot as plt

t = numpy.linspace(0, 4 * numpy.pi, 20)
cos,sin = numpy.cos, numpy.sin

x = sin(2 * t)
y = cos(t)
z = cos(2 * t)
s = 2 + sin(t)
mayavi.mlab.points3d(x, y, z, s, colormap="copper", scale_factor=.25)

arr = mayavi.mlab.screenshot()
fig = plt.figure(figsize=(5, 5))
pylab.imshow(arr)

plt.show()




结果只是matplotlib轴组中的mayavi图: Mayavi graphics in matplotlib axes

唯一棘手的部分是,您需要建立mayavi和matplotlib的尺度和尺寸的工作知识,以便在您想要生成多于一个或两个手动构建的图时将两者一起缩放。对于Mayavi和Matplotlib来说,这都是非常重要的,但是相当充分,并且从你所知道的事情的声音中都可以获得,所以我不会忘记那些点。 (现在事情在Matplotlib中你可以make them part of generated PDFs too或者用python-docx将它们移植到Microsoft Word中)