Python隐藏记号但显示记号标签

Python隐藏记号但显示记号标签,python,matplotlib,Python,Matplotlib,我可以用手把虱子去掉 ax.set_xticks([]) ax.set_yticks([]) 但这也会删除标签。我可以以任何方式绘制记号标签,但不能绘制记号和脊椎您可以使用tick_params()将记号长度设置为0: matplotlib.pyplot.setp(*args,**kwargs)用于设置艺术家对象的属性。除了使用getxticklabes()使其不可见之外,还可以使用此选项 以下几行的东西 import matplotlib.pyplot as plt fig = plt.

我可以用手把虱子去掉

ax.set_xticks([]) 
ax.set_yticks([]) 

但这也会删除标签。我可以以任何方式绘制记号标签,但不能绘制记号和脊椎

您可以使用
tick_params
()将记号长度设置为0:


matplotlib.pyplot.setp(*args,**kwargs)
用于设置艺术家对象的属性。除了使用
getxticklabes()
使其不可见之外,还可以使用此选项

以下几行的东西

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(2,1,1)
ax.set_xlabel("X-Label",fontsize=10,color='red')
plt.setp(ax.get_xticklabels(),visible=False)
下面是参考页
谢谢你的回答@julien spronck和@cmidi。
值得注意的是,我必须使用这两种方法来实现这一目标:

import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(11, 3))

data = np.random.random((4, 4))

ax1.imshow(data)
ax1.set(title='Bad', ylabel='$A_y$')
# plt.setp(ax1.get_xticklabels(), visible=False)
# plt.setp(ax1.get_yticklabels(), visible=False)
ax1.tick_params(axis='both', which='both', length=0)

ax2.imshow(data)
ax2.set(title='Somewhat OK', ylabel='$B_y$')
plt.setp(ax2.get_xticklabels(), visible=False)
plt.setp(ax2.get_yticklabels(), visible=False)
# ax2.tick_params(axis='both', which='both', length=0)

ax3.imshow(data)
ax3.set(title='Nice', ylabel='$C_y$')
plt.setp(ax3.get_xticklabels(), visible=False)
plt.setp(ax3.get_yticklabels(), visible=False)
ax3.tick_params(axis='both', which='both', length=0)

plt.show()

您可以设置
yaxis
xaxis
设置刻度位置
属性,以便它们分别显示在左侧和底部

ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
此外,还可以通过将特定脊椎的
set_visible
属性设置为
False
来隐藏脊椎

axes[i].spines['right'].set_visible(False)
axes[i].spines['top'].set_visible(False)

在参加关于Python的coursera课程时,这是一个问题

下面是给定的解决方案,我认为它更具可读性和直观性

ax.tick_params(top='off', bottom='off', left='off', right='off', labelleft='on', labelbottom='on')

假设要删除
Y
轴上的一些记号,并且只显示与值大于0的记号相对应的
ytick
,则可以执行以下操作:

from import matplotlib.pyplot as plt

fig, ax = plt.subplots()

# yticks and yticks labels
yTicks = list(range(26))
yTicks = [yTick if yTick % 5 == 0 else 0 for yTick in yTicks]
yTickLabels = [str(yTick) if yTick % 5 == 0 else '' for yTick in yTicks]
然后设置轴对象的
Y
轴,如下所示:

ax.yaxis.grid(True)
ax.set_yticks(yTicks)
ax.set_yticklabels(yTickLabels, fontsize=6)
fig.savefig('temp.png')
plt.close()
你会得到这样一个图:

这对我很有效:

plt.tick_params(axis='both', labelsize=0, length = 0)

这对我来说很好!试试看

import matplotlib.pyplot as plt
import numpy as np

plt.figure()

languages =['Python', 'SQL', 'Java', 'C++', 'JavaScript']
pos = np.arange(len(languages))
popularity = [56, 39, 34, 34, 29]

plt.bar(pos, popularity, align='center')
plt.xticks(pos, languages)
plt.ylabel('% Popularity')
plt.title('Top 5 Languages for Math & Data \nby % popularity on Stack Overflow', 
alpha=0.8)

# remove all the ticks (both axes), 
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', 
labelbottom='on')
plt.show()

目前遇到相同的问题,在版本3.3.3上解决如下:

# My matplotlib ver: 3.3.3

ax.tick_params(tick1On=False) # "for left and bottom ticks"
ax.tick_params(tick2On=False) # "for right and top ticks, which are off by default"
例如:

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
ax.tick_params(tick1On=False)
plt.show()
输出:

你是指打印标签还是勾号标签?谢谢,我指的是勾号标签。澄清了问题…你所说的脊椎是什么意思?一点额外的描述不会有什么坏处。虽然这段代码可能会解决这个问题,但如何以及为什么解决这个问题将真正有助于提高你的帖子质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请您的答案添加解释,并说明适用的限制和假设。您也可以使用
ax.xaxis.set_tick_参数(…)
而不是,例如,
ax.tick_参数(axis='x',…)
。前者更面向对象。自v2.2以来,不推荐使用“开”或“关”。现在应使用True或False。请在代码示例中添加注释符号以使其可执行。抱歉。我是新来的。谢谢你的编辑。
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
ax.tick_params(tick1On=False)
plt.show()