在imshow matplotlib中使用grid时删除刻度

798qvoo8  于 2023-11-22  发布在  其他
关注(0)|答案(3)|浏览(194)

this问题中,他们回答了如何在matplotlib中正确使用imshow的网格。我试图像他们一样做,但我想删除所有的刻度(x和y)。当我尝试这样做时,它也消除了网格,我只是显示了没有网格和刻度的图像。我的代码是:

fig, ax = plt.subplots()
data = np.random.rand(20,20)
ax.imshow(data)
ax.set_xticks(np.arange(20))
ax.set_xticklabels(np.arange(20))
ax.set_xticks(np.arange(20)+0.5, minor=True)
ax.grid(which='minor',color='w',axis='x',linewidth=6)
ax.axes.xaxis.set_visible(False)
ax.axes.yaxis.set_visible(False)
plt.show()

字符串
有没有人如何删除刻度,同时保持网格(沿着x轴在我的情况下)?

pkbketx9

pkbketx91#

移除轴(通过set_visible(False))也将移除网格。
但是,有一个解决方案将脊椎和刻度线/标签分别设置为不可见:

fig, ax = plt.subplots()
data = np.random.rand(20,20)
ax.imshow(data)
ax.set_xticks(np.arange(20))
ax.set_xticklabels(np.arange(20))
ax.set_xticks(np.arange(20)+0.5, minor=True)
ax.grid(which='minor',color='w',axis='x',linewidth=6)
# set axis spines (the box around the plot) to be invisible
plt.setp(ax.spines.values(), alpha = 0)
# set both tick marks and tick labels to size 0
ax.tick_params(which = 'both', size = 0, labelsize = 0)
plt.show()

字符串
输出为:
x1c 0d1x的数据
注意,您可能需要调整xlim/ylim和网格参数以满足您的需要。

af7jpaap

af7jpaap2#

这并不完美,但您可以将tick标签设置为空列表。

ax.axes.get_xaxis().set_ticks([])
ax.axes.get_yaxis().set_ticks([])

字符串


的数据
仅保留栅格中使用的次要xtick。

vc6uscn9

vc6uscn93#

请注意,ax是一个AxesImage示例。可以通过ax.axes.xaxisax.axes.yaxis访问各个Axis对象。
使用Axis.set_ticks()

# Turn off ticks
ax.axes.xaxis.set_ticks([])
ax.axes.yaxis.set_ticks([])

字符串

相关问题