隐藏刻度标签值但保留轴标签
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')
...我得到这张图片:
它还会隐藏标签V
和t
。如何在隐藏值的同时保留标签?
【问题讨论】:
【参考方案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 轴的刻度标签?