如何在matplotlib 3d中隐藏轴?

Sup*_*ric 31 plot matplotlib

如何在不显示轴的情况下制作3D绘图?

在绘制三维绘图时,Matplotlib不仅绘制x,y和z轴,还在xy,yz和xz平面上绘制浅灰色网格.我想绘制一个"自由浮动"的3D图,没有这些元素.

我试过的东西:

# Doesn't work; this hides the plot, not the axes
my_3d_axes.set_visible(False)

# Doesn't do anything. Also, there's no get_zaxis() function.
my_3d_axes.get_xaxis().set_visible(False)
my_3d_axes.get_yaxis().set_visible(False)
Run Code Online (Sandbox Code Playgroud)

Sup*_*ric 27

Ben Root提供了一个补丁,修复了1.0.1.它可以作为此主题的最后一封电子邮件的附件找到.引用本:

好吧,看起来隐藏3d轴是v1.0发布后添加的功能(但在我开始使用mplot3d之前).此补丁应启用基本功能,而不会干扰现有功能.要隐藏轴,您必须将私有成员"_axis3don"设置为False,如下所示:

ax = plt.gca(projection ='3d')ax._axis3don = False

如果你这样做,那么你将得到你想要的,并且你的代码在升级时仍然与mplot3d兼容(尽管首选的方法是调用set_axis_on()或set_axis_off()).

我希望有所帮助!

本根

  • 现在支持`ax.set_axis_off()`和`set_axis_on()`(1.4.1) (28认同)

Cir*_*四事件 8

ax.set_axis_off()

只是为了提供/sf/answers/515475201/中提到的具体而直接的示例

#!/usr/bin/env python3

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
import mpl_toolkits.mplot3d.art3d as art3d

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_axis_off()

# Draw a circle on the x=0 'wall'
p = Circle((0, 0), 1, fill=False)
ax.add_patch(p)
art3d.pathpatch_2d_to_3d(p, zdir="x")
p = Circle((0, 0), 1, fill=False)
ax.add_patch(p)
art3d.pathpatch_2d_to_3d(p, zdir="z")

ax.set_xlim(-1.2, 1.2)
ax.set_ylim(-1.2, 1.2)
ax.set_zlim(-1.2, 1.2)

plt.savefig('main.png', format='png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

没有ax.set_axis_off()它会看起来像:

在此输入图像描述

然而,您会注意到,这会在图形周围产生过大的空白边距,因为它只是隐藏轴但不会更改视图框。我尝试过bbox_inches='tight',但它并没有像在 2D 中那样有帮助。如何解决这个问题:删除 Axes3d (matplotlib) 中的空格

在 matplotlib==3.2.2 上测试。