matplotlib 隐藏刻度文本,但保留3D图的网格

z2acfund  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(145)

我一直在寻找一种方法来删除刻度文本,但不是从3D matplotlib图中删除实际的网格线。不幸的是,我仍然不知道如何做到这一点,因为大多数解决方案似乎只适用于2D图形。
我尝试了以下代码:

ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])

但这也消除了网格线。我已经提供了一个例子,我想从图中删除勾选文本,并举例说明当使用上面的代码树桩时会发生什么。

任何帮助都非常感谢!

sy5wg1nm

sy5wg1nm1#

一种方法是设置数字刻度和空标签刻度:

import matplotlib.pyplot as plt
import numpy as np

xmin, xmax = -10, 10
ymin, ymax = -10, 10
zmin, zmax = -10, 10
x = np.random.uniform(xmin, xmax, 20)
y = np.random.uniform(ymin, ymax, 20)
z = np.random.uniform(zmin, zmax, 20)

xticks = np.arange(xmin, xmax+1, 3)
yticks = np.arange(xmin, xmax+1, 3)
zticks = np.arange(xmin, xmax+1, 3)
empty_labels_x = ["" for i in range(len(xticks))]
empty_labels_y = ["" for i in range(len(yticks))]
empty_labels_z = ["" for i in range(len(zticks))]

fig = plt.figure()
ax = fig.add_subplot(projection="3d")
ax.scatter(x, y, z)
ax.set_xticks(xticks, empty_labels_x)
ax.set_yticks(yticks, empty_labels_y)
ax.set_zticks(zticks, empty_labels_z)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")

相关问题