如何在Python中隐藏刻度标签但保留刻度位置?

65
我想隐藏我创建的图表上的刻度标签,但保留此刻度本身(轴上的小标记)。例如,当我尝试使用我在这里找到的方法时,整个刻度被删除,而不仅仅是标签。那么,如何仅删除标签?
4个回答

134

这里是一个稍微简单的答案,使用ax.tick_params

import matplotlib.pylab as plt

fig, ax = plt.subplots()
plt.plot([1,2,3],[4,5,6])

ax.tick_params(labelbottom=False)    

plt.show()

这是使用Matplotlib 3生成的结果:

enter image description here

正如@chris所评论的那样,在上面的例子中,可以使用labeltoplabelleftlabelright隐藏任何其他坐标轴上的标签,而不是使用labelbottom


7
对于那些想要了解如何隐藏其他轴标签的人,请注意ax.tick_params接受以下关键字参数:labelbottomlabeltoplabelleftlabelright - chris
在我看来,比被接受的答案更好。 - irene
还是更喜欢使用这种方法,因为ax.set_xticklabels([])方法也会禁用get_major_formatter().get_offset()方法。 - Maurits Houck

20

将刻度标签设置为非空数组,而是设置为空字符串列表。在下面的示例中,我已经用空字符串替换了x轴标签,保留y轴不变。从这里开始,您可以选择性地保留某些标签(如果您希望的话)。

import pylab as plt

fig, ax = plt.subplots()
ax.plot([1,2,3],[4,5,6])

labels = [item.get_text() for item in ax.get_xticklabels()]

empty_string_labels = ['']*len(labels)
ax.set_xticklabels(empty_string_labels)

plt.show()

enter image description here

这段代码改编自之前的回答


8
你可以使用ax.set_yticklabels([])来清空纵坐标刻度,无需初始化一个空字符串列表。 - Chidi

7

我发现divenex的回答对我不起作用。这个回答创建刻度,而不触发任何自动标签,因此不需要使用"labelbottom=False":

如果底部和左侧的刻度已经存在:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
plt.plot([1,2,3],[4,5,6])

ax.tick_params(right= True,top= True)

如果不存在任何时间戳:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
plt.plot([1,2,3],[4,5,6])

ax.tick_params(right= True,top= True,left= True, bottom= True)

这个答案不会隐藏标签。它创建刻度,保持标签不变。 - divenex

3
import matplotlib.pylab as plt

fig, ax = plt.subplots()
plt.plot([1,2,3],[4,5,6])

ax.set_xticklabels([])

plt.show()

这个问题的最简洁答案! - Stranger Forever

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