mplot3d 常见问题#

mplot3d 与 Mayavi 有何不同?#

Mayavi 是一个功能非常强大且特性丰富的 3D 绘图库。对于高级 3D 场景和出色的渲染能力,强烈推荐使用 Mayavi。

mplot3d 旨在让用户创建与 Matplotlib 2D 绘图具有相同“外观和感觉”的简单 3D 图形。此外,用户可以使用他们已经熟悉的相同工具包来生成他们的 2D 和 3D 绘图。

我的 3D 绘图在某些视角下看起来不对劲#

这可能是 mplot3d 最常报告的问题。问题在于——从某些视角看——一个 3D 对象可能会出现在另一个对象的前面,即使它实际上在其后面。这可能导致绘图看起来不“物理正确”。

不幸的是,尽管正在努力减少这种伪影的发生,但目前这是一个棘手的问题,在 Matplotlib 核心支持 3D 图形渲染之前无法完全解决。

这个问题发生的原因是 3D 数据被降维到 2D + z-order 标量。对于集合中 3D 对象的所有部分,单个值表示第三维。因此,当两个集合的边界框相交时,就可能出现这种伪影。此外,两个 3D 对象(例如多边形或补丁)的交集无法在 Matplotlib 的 2D 渲染引擎中正确渲染。

这个问题可能要等到所有后端都添加了 OpenGL 支持(非常欢迎补丁)才能解决。在此之前,如果您需要复杂的 3D 场景,我们建议使用 MayaVi

我不喜欢 3D 绘图的布局方式,如何更改?#

从历史上看,mplot3d 曾受限于用于控制视觉效果(例如标签间距、刻度长度和网格线宽度)的硬编码参数。目前正在努力消除这个问题。对于 matplotlib v1.1.0,有一种半官方的方式可以修改这些参数。有关更多信息,请参阅 mplot3d API 文档的 mplot3d.axis3d 部分中的注释。