在保留网格的同时删除 x 轴刻度(matplotlib)[重复]
Posted
技术标签:
【中文标题】在保留网格的同时删除 x 轴刻度(matplotlib)[重复]【英文标题】:Remove the x-axis ticks while keeping the grids (matplotlib) [duplicate] 【发布时间】:2013-12-23 08:58:34 【问题描述】:我想删除 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】:删除记号是指删除记号标签还是记号本身?这将删除标签:
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
您也可以在这里turn the tick labels off 而无需通过设置tic.label1On = tic.label2On = False
来使用ax.set_xticklabels([])
“hack”:
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()
【讨论】:
是的,这就是我想要的。我只是想删除刻度标签。 太酷了。好吧,以防万一,我也想出了如何删除小刻度线:) 我有两个子图(ax1 和 ax2)。如何在不更改单个轴属性的情况下进行更改?我的意思是,有没有办法做 fig.setxticklables([]) 之类的事情,而不是为轴做,这样 ax1 和 ax2 都会得到变化? @pceccon -- 我已经有一段时间没有真正使用过matplotlib
,但也许ax = plt.gca()
?
我想用最近的一些见解来补充@mgilson 的答案。截至 2020 年初,隐藏刻度线的推荐方法不再是 tic.tick1On=False
。现在正确的方法是:Tick.tick1line.set_visible(False)
。以上是关于在保留网格的同时删除 x 轴刻度(matplotlib)[重复]的主要内容,如果未能解决你的问题,请参考以下文章