保留网格线的同时删除x轴刻度(matplotlib)

48

我想在保留垂直网格的同时去掉 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)

如何保留网格线同时隐藏 X 轴刻度?

1个回答

79
您的意思是要移除刻度线还是仅移除刻度标签?如果是移除标签,可以使用以下代码:
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()

如果你真的想要去掉这些小勾勾,你可以添加以下内容:
for tic in ax.xaxis.get_major_ticks():
    tic.tick1On = tic.tick2On = False

您可以通过设置tic.label1On = tic.label2On = False来关闭刻度标签,而不必使用ax.set_xticklabels([])“hack”:

需要翻译的内容:turn the tick labels off

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 tick in ax.xaxis.get_major_ticks():
    tick.tick1line.set_visible(False)
    tick.tick2line.set_visible(False)
    tick.label1.set_visible(False)
    tick.label2.set_visible(False)

plt.show()

2
哦,很酷。以防万一,我也想出了如何去除小勾线的方法 :) - mgilson
@DurgaDatta -- 我不知道有没有其他比我更专业的人知道这些问题。在绘图之后,你可以尝试像这样做:for ax in fig.get_axes(): ax.set_xticklabels([])。这个方法对你有帮助吗? - mgilson
1
如何直接从 plt 中执行此操作,即当您不执行 ax = fig.add_subplot(111) 时? - pceccon
1
@pceccon -- 我已经有一段时间没有使用 matplotlib 了,但也许可以尝试 ax = plt.gca() - mgilson
11
我想补充一下@mgilson的答案,提供一些最新的见解。截至2020年初,隐藏刻度线的推荐方法不再是tic.tick1On=False。正确的方法现在是:Tick.tick1line.set_visible(False) - Pierre Massé
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接