Python 隐藏刻度但显示刻度标签
Python hide ticks but show tick labels
我可以用
删除刻度线
ax.set_xticks([])
ax.set_yticks([])
但这也会删除标签。我可以用任何方式绘制刻度标签而不是刻度和脊柱
您可以使用 tick_params
(http://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()
matplotlib.pyplot.setp(*args, **kwargs)
用于设置艺术家对象的属性。除了 get_xticklabels()
之外,您还可以使用它来使其不可见。
以下内容
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
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)
在 Python 参加 coursera 课程时,这是一个问题。
下面是给出的解决方案,我认为它更具可读性和直观性。
ax.tick_params(top=False,
bottom=False,
left=False,
right=False,
labelleft=True,
labelbottom=True)
假设你想删除 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()
你会得到这样的情节:
这对我有用:
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.set_xticks([])
ax.set_yticks([])
但这也会删除标签。我可以用任何方式绘制刻度标签而不是刻度和脊柱
您可以使用 tick_params
(http://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()
matplotlib.pyplot.setp(*args, **kwargs)
用于设置艺术家对象的属性。除了 get_xticklabels()
之外,您还可以使用它来使其不可见。
以下内容
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
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)
在 Python 参加 coursera 课程时,这是一个问题。
下面是给出的解决方案,我认为它更具可读性和直观性。
ax.tick_params(top=False,
bottom=False,
left=False,
right=False,
labelleft=True,
labelbottom=True)
假设你想删除 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()
你会得到这样的情节:
这对我有用:
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()
输出: