隐藏轴值,但将轴刻度标签保留在matplotlib中


101

我有这张图片:

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

在此处输入图片说明

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

plt.axis('off')

...我得到这张图片:

在此处输入图片说明

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

Answers:


136

如果您使用matplotlib 面向对象的方法,那么使用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()

11
非常适合删除刻度线标签,但是您仍然可以看到刻度线...
Andrew Schreiber


44

这很好。只需在此之前粘贴plt.show()

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

繁荣。


2
谢谢,这很好。在其他情况下,滴答声会保留下来(因为默认情况下,滴答声方向是不显示的)
user140259 '18

与ax.set_xticklabels([])之类的答案不同,此选项在以下情况下效果最佳:一个使用带有sharex选项的子图,并且只想删除其中一个子图的刻度。
МихаилЛисаков

大!还有plt.gca()。axes.get_xaxis()。set_visible(False)也可以摆脱x轴标签和刻度。
fbparis

1
或者如果您已经有斧头对象,请ax.xaxis.set_visible(False)
旋转

1
@filip我很高兴它有所帮助:)
MRT

3

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

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

这个相关问题也有一些更好的建议: 在matplotlib图中隐藏轴文本

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


2

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

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

否则ax.set_yticklabels([])ax.set_xticklabels([])将保留刻度线。


当我尝试时ax.set_yticks([], []),收到以下警告:“ MatplotlibDeprecationWarning:自Matplotlib 3.2起,不推荐在位置上传递set_xticks()的次要参数;该参数稍后将成为仅关键字的次要版本。” 什么是正确的选择?
Rylan Schaeffer,

@RylanSchaeffer,在您的示例中,ax.set_yticks([], [])您传递了2个导致错误的空列表。为什么要这样做?请参见命令手册。如果不应在位置上传递第一个参数,请使用关键字:传递它ax.set_yticks(ticks=[])
Ruslan S.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.