Python隐藏刻度,但显示刻度标签

时间:2015-05-01 13:58:02

标签: python matplotlib

我可以用

删除刻度线
ax.set_xticks([]) 
ax.set_yticks([]) 

但这也会删除标签。我可以用任何方式绘制刻度标签而不是刻度线和脊柱

9 个答案:

答案 0 :(得分:59)

您可以使用tick_paramshttp://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params):

将刻度长度设置为0
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1],[1])
ax.tick_params(axis=u'both', which=u'both',length=0)
plt.show()

答案 1 :(得分:13)

感谢您的回答@ julien-spronck和@cmidi 作为一个注释,我必须使用这两种方法才能使它工作:

const Foo = {
  bar: function(baz) { 
    console.log(baz);
  }
}

let x = 'Foo';
let y = 'cookies';

eval(x).bar(y);

Outcome of the code with desired labels

答案 2 :(得分:6)

在参加Python课程时,这是一个问题。

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

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

答案 3 :(得分:4)

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

以下

的内容
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)

以下是参考页面 http://matplotlib.org/api/pyplot_api.html

答案 4 :(得分:1)

您可以设置yaxisxaxis set_ticks_position属性,以便它们分别显示在左侧和底侧。

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)

答案 5 :(得分:1)

这对我来说效果很好!试试吧

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()

答案 6 :(得分:0)

这对我有用:

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

答案 7 :(得分:0)

当前遇到相同的问题,在版本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

答案 8 :(得分:-1)

假设您要删除Y轴上的某些刻度线,而只显示与值大于0的刻度线相对应的yticks,则可以执行以下操作:

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()

然后您会得到这样的情节:

enter image description here