Python Matplotlib Gridspec,不想要任意轴标签

3
我有一些代码来绘制一个带有独特位置的网格,每个单元格中的数据都是不同的。我发现最简单的方法是使用gridspec创建网格,并使用它来精确定位我的子图。然而,我遇到了一个问题,整个网格在每个轴上的标签都标为0到1。即使网格的维度改变,这种情况仍然会发生。显然,这些数字与我的数据没有任何关联。由于我要显示的内容是定性的而非定量的,因此我希望完全删除该图中的所有标签。
以下是我用来创建该图像的MWE:(点击此处查看示例)
import numpy as np
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt

# mock-up of data being used
x = 6
y = 7
table = np.zeros((x, y))

# plotting
fig = plt.figure(1)
gs = gridspec.GridSpec(x, y, wspace=0, hspace=0)
plt.title('Example Plot')

for (j, k), img in np.ndenumerate(table):
   ax = fig.add_subplot(gs[x - j - 1, k])
   ax.set_xticklabels('')
   ax.set_yticklabels('')

plt.show()

我找不到任何关于这个问题的记录,因此非常感谢任何帮助。

1个回答

2

如果您只想在绘图上绘制网格,请使用以下代码:

import numpy as np
import matplotlib.pyplot as plt

# mock-up of data being used
x = 6
y = 7
table = np.zeros((x, y))

# plotting
fig = plt.figure(1)
plt.title('Example Plot')

plt.gca().xaxis.grid(True, color='darkgrey', linestyle='-')
plt.gca().yaxis.grid(True, color='darkgrey', linestyle='-')
plt.show()

另一种变体使用了网格规范(gridspec):

...
# hide ticks of main axes
ax0 = plt.gca()
ax0.get_xaxis().set_ticks([])
ax0.get_yaxis().set_ticks([])

gs = gridspec.GridSpec(x, y, wspace=0, hspace=0)
plt.title('Example Plot')

for (j, k), img in np.ndenumerate(table):
    ax = fig.add_subplot(gs[x - j - 1, k])
    # hide ticks of gribspec axes
    ax.get_xaxis().set_ticks([])
    ax.get_yaxis().set_ticks([])

enter image description here


这是一个有趣的技巧,我会记在心里,但它并没有真正解决我的问题。我的完整代码在网格的每个单元格中绘制不同的数据,因此我正在使用gridspec创建子图。我希望删除网格沿x和y轴的数字,因为它们对我的数据没有影响,同时保持如上图所示的网格结构。 - astrobel
据我所理解,您想要一个无任何刻度和标签的gridspec图? - Serenity
一般来说,我已经在之前的回答中添加了一个带有 gridspec 的变量。 - Serenity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接