我正在使用python + matplotlib,我有两个共享轴的图。如果您尝试在共享轴时设置graph1.set_xticklabels([])
,则它无效,因为它是共享的。有没有办法共享轴并能够隐藏一个图的x轴?
答案 0 :(得分:104)
这是使用共享轴时常见的问题。
幸运的是,有一个简单的解决方法:使用plt.setp(ax.get_xticklabels(), visible=False)
使标签在一个轴上不可见。
这相当于[label.set_visible(False) for label in ax.get_xticklabels()]
,无论它的价值如何。 setp
将自动对可迭代的matplotlib对象以及单个对象进行操作。
举个例子:
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,1,1)
ax1.plot(range(10), 'b-')
ax2 = fig.add_subplot(2,1,2, sharex=ax1)
ax2.plot(range(10), 'r-')
plt.setp(ax1.get_xticklabels(), visible=False)
plt.show()
答案 1 :(得分:42)
根据matplotlib-users上的帖子,您可以使用
import matplotlib.pyplot as plt
for ax in plt.gcf().axes:
try:
ax.label_outer()
except:
pass
答案 2 :(得分:11)
您可以使用Axes.tick_params():
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212, sharex=ax1)
ax1.tick_params(labelbottom=False)
答案 3 :(得分:3)
您可以在创建子图期间使用plt.subplots
作为
fig, axes = plt.subplots(nrows=2, sharex=True)
这将自动关闭内轴的勾选标签。
完整示例:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, sharex=True)
axes[0].plot([1,2,3])
axes[1].plot([3,2,1])
plt.show()
答案 4 :(得分:0)
不幸的是,我不允许对esmit的答案发表评论(这是我认为这是最好的解决方案,谢谢esmit),因此我必须将评论写为新答案:我将他的解决方案放入了一个简单的函数中>
def remove_inner_ticklabels(fig):
for ax in fig.axes:
try:
ax.label_outer()
except:
pass
您可以在plt.show()
之前致电。乔·金顿的答案由于某种原因对我不起作用。