我一直在用 Mayavi 进行 3D 绘图,我可以绘制我想要的散点图,但似乎无法让轴看起来正确。我发现了以下内容上一个问题 https://stackoverflow.com/questions/4739360/any-easy-way-to-plot-a-3d-scatter-in-python-that-i-can-rotate-around/4739704这开始明白我所追求的,但没有详细说明。我想要一个 3D 散点图,例如#1 https://i.stack.imgur.com/HkWkm.jpg但有漂亮的轴,比如#2 https://i.stack.imgur.com/McrY1.jpg(我会嵌入,但我没有足够的声誉)。
普通的 Mayavi 斧头无法切割它。对于获取 Matplotlib 拥有的飞机有什么建议吗?
一旦我们掌握了“窍门”,这实际上是非常简单的,而且我已经做过很多次了。
“技巧”是首先生成 mayavi 图,然后将其传输到 matplotlib 窗口中,您可以在其中使用所有熟悉的 matplotlib 工具来制作带有数字、日期、箭头或 matplotlib 提供的其他部分的轴。在此代码示例中,我将把 mayavi 'copper spheres' 示例放入 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()
The result is just the mayavi plot in a matplotlib set of axes:
![Mayavi graphics in matplotlib axes](https://i.stack.imgur.com/QIu8c.png)
唯一棘手的部分是,如果您想要生成超过一两个手动构建的绘图,您需要建立有关 mayavi 和 matplotlib 的比例和尺寸的实用知识,以使两者一起缩放。这不是微不足道的,但对于 Mayavi 和 Matplotlib 来说都有相当详细的记录,并且从你都知道的事情的声音来看,所以我不会重复这些要点。 (现在事情已经在 Matplotlib 中了,你可以使它们也成为生成的 PDF 的一部分 https://stackoverflow.com/questions/5356413/draw-images-with-canvas-and-use-simpledoctemplate/28389092#28389092或使用 python-docx 将它们移植到 Microsoft Word 中)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)