删除matplotlib图中的xticks?

Vin*_*ent 248 python plot matplotlib

我有一个semilogx情节,我想删除xticks.我试过了:

plt.gca().set_xticks([])
plt.xticks([])
ax.set_xticks([])
Run Code Online (Sandbox Code Playgroud)

网格消失(确定),但小蜱(在主蜱的位置)仍然存在.如何删除它们?

Joh*_*ard 407

这个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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我很欣赏这不仅可以回答这个问题,还可以提供一个模板,用于关闭/打开几件事.这将结果应用于x和y轴:`plt.tick_params(axis ='both',= ='both',bottom ='off',top ='off',labelbottom ='off',right ='off ',left ='off',labelleft ='off')` (65认同)
  • 这是一个很好的答案.对于那些寻找oo版本的人来说,`axes`具有相同的[`tick_params`](http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params)方法. (32认同)
  • 在较新版本的`matplotlib`中,你应该将`'on'`替换为'True`而将''off'替换为`False`. (14认同)
  • 如果它是3D情节怎么办? (2认同)
  • 应该针对 OOP 接口和较新版本的语法更新答案。 (2认同)

Mar*_*cek 117

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

plt.axis('off')
Run Code Online (Sandbox Code Playgroud)

  • 我需要什么,谢谢.面向对象的版本将是现有轴实例上的`ax.axis('off')`. (21认同)
  • 仅适用于xaxis? (4认同)
  • @qrtLs 仅禁用 x 轴标签:`plt.xticks([])` 对我有用。 (4认同)

Tom*_*ips 64

以下是我在matplotlib邮件列表中找到的替代解决方案:

import matplotlib.pylab as plt

x = range(1000)
ax = plt.axes()
ax.semilogx(x, x)
ax.xaxis.set_ticks_position('none') 
Run Code Online (Sandbox Code Playgroud)

图形


has*_*uke 62

或者,您可以传递空的刻度位置并标记为

plt.xticks([], [])
Run Code Online (Sandbox Code Playgroud)

  • @RylanSchaeffer `ax.set_xticks([])` 用于主要刻度,`ax.set_xticks([],minor=True)` 用于次要刻度。与“pyplot”等效的是“plt.xticks([])”和“plt.xticks([],minor=True)”。 (6认同)
  • 如果您已有轴实例,例如说“ ax”,则可以使用:“ ax.set_xticks([],[])”。 (4认同)
  • @GuilhermeSalomé 现在会引发警告,“自 Matplotlib 3.2 起,不推荐在位置上传递 set_xticks() 的次要参数;该参数将在两个次要版本之后变为仅关键字。” 现在正确的解决方案是什么? (2认同)

小智 40

有一个比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')
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • "更好"是有争议的,但替代品+1. (22认同)

aur*_*ham 24

试试这个删除标签(但不是刻度线):

import matplotlib.pyplot as plt

plt.setp( ax.get_xticklabels(), visible=False)
Run Code Online (Sandbox Code Playgroud)

  • `setp`处于pylab模式,不能用于单个轴 (3认同)
  • 面向对象的接口怎么样? (2认同)

Ami*_*ose 11

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

from matplotlib import pyplot as plt    
plt.xticks([])
Run Code Online (Sandbox Code Playgroud)

这段代码可能有助于删除xticks和yticks.

from matplotlib import pyplot as plt    
plt.xticks([]),plt.yticks([])
Run Code Online (Sandbox Code Playgroud)


hah*_*nec 7

那些正在寻找关闭所有刻度和标签的简短命令的人应该没问题

plt.tick_params(top=False, bottom=False, left=False, right=False,
                labelleft=False, labelbottom=False)
Run Code Online (Sandbox Code Playgroud)

bool自版本 matplotlib>=2.1.1 以来,它允许输入各个参数

对于自定义刻度设置,文档很有帮助:

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.tick_params.html