隐藏刻度标签值但保留轴标签

Posted

技术标签:

【中文标题】隐藏刻度标签值但保留轴标签【英文标题】:Hide tick label values but keep axis labels 【发布时间】:2016-08-30 14:20:01 【问题描述】:

我有这张图片:

plt.plot(sim_1['t'],sim_1['V'],'k')
plt.ylabel('V')
plt.xlabel('t')
plt.show()

我想隐藏数字;如果我使用:

plt.axis('off')

...我得到这张图片:

它还会隐藏标签Vt。如何在隐藏值的同时保留标签?

【问题讨论】:

【参考方案1】:

如果你使用 matplotlib object-oriented approach,这是一个使用 ax.set_xticklabels()ax.set_yticklabels() 的简单任务。在这里,我们可以将它们设置为空列表以删除任何标签:

import matplotlib.pyplot as plt

# Create Figure and Axes instances
fig,ax = plt.subplots(1)

# Make your plot, set your axes labels
ax.plot(sim_1['t'],sim_1['V'],'k')
ax.set_ylabel('V')
ax.set_xlabel('t')

# Turn off tick labels
ax.set_yticklabels([])
ax.set_xticklabels([])

plt.show()

如果您还想删除刻度线和标签,可以使用 ax.set_xticks()ax.set_yticks() 并将它们也设置为空列表:

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

【讨论】:

非常适合去除刻度标签,但您仍然会得到刻度线... 要删除刻度线,还要添加ax.set_yticks([])【参考方案2】:

没有subplots,您可以像这样普遍删除刻度:

plt.xticks([])
plt.yticks([])

【讨论】:

这会删除刻度线和刻度线标签 - 正是我想要的!【参考方案3】:

这很好用。把这个贴在plt.show()之前:

plt.gca().axes.get_yaxis().set_visible(False)

轰隆隆。

【讨论】:

谢谢,这很好用。在其他情况下,记号被保留(因为记号方向默认为 out) 与 ax.set_xticklabels([]) 之类的答案不同,这个答案非常适合以下情况:使用带有 sharex 选项的子图,并且只想删除其中一个子图的刻度。 或者如果你已经有了 ax 对象,ax.xaxis.set_visible(False) @spinup ax.axes.get_xaxis().set_visible(False) 也有效 @filip 我很高兴它有帮助:)【参考方案4】:

要完全删除刻度线,请使用:

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

否则ax.set_yticklabels([])ax.set_xticklabels([]) 将保留标记。

【讨论】:

当我尝试ax.set_yticks([], []) 时,我收到以下警告:“MatplotlibDeprecationWarning: Passing the minor parameter of set_xticks() positionally is deprecated since Matplotlib 3.2; the parameter will become keyword-only two minor releases 。”什么是正确的选择? @RylanSchaeffer,在您的示例ax.set_yticks([], []) 中,您传递了 2 个导致错误的空列表。为什么这样做?请参阅命令手册。如果第一个参数不应该按位置传递,请使用关键字传递它:ax.set_yticks(ticks=[])【参考方案5】:

plt.gca().axes.yaxis.set_ticklabels([])

【讨论】:

【参考方案6】:

不确定这是最好的方法,但您当然可以像这样替换刻度标签:

import matplotlib.pyplot as plt
x = range(10)
y = range(10)
plt.plot(x,y)
plt.xticks(x," ")
plt.show()

在 Python 3.4 中,这会生成一个简单的线图,x 轴上没有刻度标签。一个简单的例子在这里: http://matplotlib.org/examples/ticks_and_spines/ticklabels_demo_rotation.html

这个相关问题也有一些更好的建议: Hiding axis text in matplotlib plots

我是 python 新手。您的里程可能在早期版本中有所不同。也许其他人可以提供帮助?

【讨论】:

【参考方案7】:

这也有效。

fig, ax = plt.subplots()
ax.yaxis.set_major_locator(plt.NullLocator())
ax.xaxis.set_major_formatter(plt.NullFormatter())

请参阅本书了解自定义刻度的好技巧 https://jakevdp.github.io/PythonDataScienceHandbook/04.10-customizing-ticks.html

【讨论】:

以上是关于隐藏刻度标签值但保留轴标签的主要内容,如果未能解决你的问题,请参考以下文章

Plotly/Dash:是不是可以隐藏辅助 y 轴的刻度标签?

如何在python中隐藏刻度标签但保持刻度不变?

抑制 matplotlib 中的科学记数法 offsetText

删除ggplot中的所有x轴标签[重复]

echarts+x轴刻度间距是怎么回事

在 pyplot 子图中保留轴的同时删除框架