在保留网格的同时删除 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)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 pyplot 子图中保留轴的同时删除框架

将轴刻度标签中的一个字符更改为斜体,同时保留多行[重复]

删除ggplot中的所有x轴标签[重复]

隐藏刻度标签值但保留轴标签

Highcharts 图表删除类别(x 轴)上间隔中的现有刻度

如何使用 Plotly 删除堆叠和分组条形图中的 x 轴刻度标签