在保持网格的同时删除x轴刻度(matplotlib)

Dur*_*tta 26 python matplotlib

我想删除x轴上的刻度线,但保留垂直网格.当我执行以下操作时,我会丢失x轴刻度以及网格.

import matplotlib.pyplot as plt
fig = plt.figure() 
figr = fig.add_subplot(211)
...
figr.axes.get_xaxis().set_visible(False)
figr.xaxsis.grid(True)
Run Code Online (Sandbox Code Playgroud)

如何在使x轴刻度不可见时保留网格?

mgi*_*son 47

通过删除刻度线,您的意思是删除刻度标签或刻度线本身?这将删除标签:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 100)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(x, np.sin(x))

ax.grid(True)
ax.set_xticklabels([])


plt.show()
Run Code Online (Sandbox Code Playgroud)

如果你真的想摆脱小刻度线,你可以添加:

for tic in ax.xaxis.get_major_ticks():
    tic.tick1On = tic.tick2On = False
Run Code Online (Sandbox Code Playgroud)

您也可以这里关闭刻度标签,而无需ax.set_xticklabels([])通过设置来解决"hack" tic.label1On = tic.label2On = False:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2*np.pi, 100)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(x, np.sin(x))

ax.grid(True)
for tic in ax.xaxis.get_major_ticks():
    tic.tick1On = tic.tick2On = False
    tic.label1On = tic.label2On = False

plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 我想用一些最近的见解来补充 @mgilson 的答案。截至 2020 年初,隐藏刻度线的推荐方法不再是“tic.tick1On=False”。现在正确的方法是:``Tick.tick1line.set_visible(False)```。 (8认同)
  • 哦酷。好吧,以防万一,我也想出了如何去除小刻度线:) (2认同)