我有一个Semilogx图,我想删除xticks。我试过了:

plt.gca().set_xticks([])
plt.xticks([])
ax.set_xticks([])


网格消失了(确定),但是仍然保留了小刻度(在主刻度上)。如何删除它们?

评论

有些解决方案对我不起作用。但是这里的示例稍有变化:ax.set_xticks([],[])并解决了...

#1 楼

tick_params方法对于这样的事情非常有用。该代码关闭主要和次要刻度,并从x轴上删除标签。

from matplotlib import pyplot as plt
plt.plot(range(10))
plt.tick_params(
    axis='x',          # changes apply to the x-axis
    which='both',      # both major and minor ticks are affected
    bottom=False,      # ticks along the bottom edge are off
    top=False,         # ticks along the top edge are off
    labelbottom=False) # labels along the bottom edge are off
plt.show()
plt.savefig('plot')
plt.clf()




评论


我赞赏这不仅能回答问题,而且提供了一个用于打开/关闭几件事的模板。这会将结果应用于x和y轴:plt.tick_params(axis ='both',which ='both',bottom ='off',top ='off',labelbottom ='off',right ='off' ,left ='off',labelleft ='off')

–史蒂文·霍维尔(Steven C. Howell)
2015年7月11日在4:32



如果是3D图怎么办?

–tommy.carstensen
2015年9月2日19:23在

这是一个很好的答案。对于寻找oo版本的用户,轴具有相同的tick_params方法。

–疯狂物理学家
16年8月16日在17:13

在较新版本的matplotlib中,应将“ on”替换为True,将“ off”替换为False。

– BallpointBen
18年3月22日在23:22

答案应针对OOP接口和较新版本的语法进行更新。

–ifly6
19年9月30日在19:27

#2 楼

不完全是OP的要求,而是禁用所有轴线,刻度和标签的简单方法是简单地调用:

plt.axis('off')


评论


我需要什么谢谢。面向对象的版本在现有axes实例上为ax.axis('off')。

–等离子Binturong
16年6月7日在10:21

仅适用于xaxis?

– qrtLs
19年3月19日在9:26

@qrtLs仅禁用x轴标签:plt.xticks([])为我工作。

–瑞沙(Rishabh Agrahari)
20 Dec 18'在9:53

#3 楼

另外,您可以传递一个空的刻度位置并将其标签为

# for matplotlib.pyplot
# ---------------------
plt.xticks([], [])
# for axis object
# ---------------
# from Anakhand May 5 at 13:08
# for major ticks
ax.set_xticks([])
# for minor ticks
ax.set_xticks([], minor=True)


评论


如果您已有轴实例,例如ax,则可以使用:ax.set_xticks([],[])

– GuilhermeSalomé
19 Mar 19 '19在18:56



@GuilhermeSalomé现在会发出警告,“自Matplotlib 3.2起,不推荐在位置上传递set_xticks()的次要参数;该参数将在以后的两个次要版本中变为仅关键字形式。”现在正确的解决方案是什么?

– Rylan Schaeffer
20年4月23日在15:01

@RylanSchaeffer ax.set_xticks([])用于大刻度线,ax.set_xticks([],minor = True)用于小刻度线。 pyplot的等效项是plt.xticks([])和plt.xticks([],minor = True)。

–Anakhand
20-5-5在13:08

#4 楼

这是我在matplotlib邮件列表上找到的替代解决方案:

import matplotlib.pylab as plt

x = range(1000)
ax = plt.axes()
ax.semilogx(x, x)
ax.xaxis.set_ticks_position('none') 




#5 楼

有比John Vinyard提供的解决方案更好,更简单的解决方案。使用NullLocator

import matplotlib.pyplot as plt

plt.plot(range(10))
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.show()
plt.savefig('plot')


希望有所帮助。

评论


“更好”是值得商bat的,但备选方案则为+1。

–mechanical_meat
13年1月21日在18:38



当目标是仅从“放大”插图中删除xticks,同时将其保留在主图中时,此解决方案的变体也对我有用。使用axins.xaxis.set_major_locator(plt.NullLocator()),其中axins是axins = zoomed_inset_axes()(从mpl_toolkits.axes_grid1.inset_locator导入的函数)返回的对象。

–丹尼斯·苏梅斯(Dennis Soemers)
18年8月14日在13:06

#6 楼

尝试这样做以除去标签(而不是刻度):

import matplotlib.pyplot as plt

plt.setp( ax.get_xticklabels(), visible=False)


示例

评论


setp处于pylab模式,不能用于单个轴

–破破烂烂
2014年9月2日23:21

面向对象的接口怎么样?

–ifly6
19-09-30在17:57

这是对我来说也适用于3D绘图的唯一答案。谢谢你!

–布伦特
20-2-3在22:06

#7 楼

此代码段可能仅有助于删除xticks。

from matplotlib import pyplot as plt    
plt.xticks([])


此代码段可能有助于删除xticks和yticks。

from matplotlib import pyplot as plt    
plt.xticks([]),plt.yticks([])


#8 楼

那些想要关闭所有刻度线和标签的简短命令的人应该可以使用
 plt.tick_params(top=False, bottom=False, left=False, right=False,
                labelleft=False, labelbottom=False)
 

,该类型允许使用bool自版本matplotlib> = 2.1.1起的各个参数
对于自定义刻度设置,文档很有帮助:
https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.tick_params.html

#9 楼

 # remove all the ticks (both axes), and tick labels on the Y axis
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')
 


评论


面向对象的版本是ax.tick_params()

– MarceloVilla-Piñeros
19年4月20日在4:45

另外,不建议使用off和on。 MatplotlibDeprecationWarning:不建议将“ on”,“ true”,“ off”,“ false”之一作为布尔值传递;而是使用实际的布尔值(True / False)。

– MarceloVilla-Piñeros
19-4-20在4:58



#10 楼

通过向脚本添加命令来修改以下rc参数:
plt.rcParams['xtick.bottom'] = False
plt.rcParams['xtick.labelbottom'] = False

matplotlib文档的此部分描述了一个matplotlibrc示例文件,其中列出了许多其他参数,例如更改图形大小,图形颜色,动画设置等