删除每个y轴子图的第一个和最后一个刻度标签

时间:2013-12-03 11:56:07

标签: python matplotlib

创建我使用的5个子图:

`ax = plt.subplots(5, sharex=True)`

然后,我想删除每个y轴子图的第一个和最后一个标签刻度(因为它们相互叠加),我用过:

`plt.setp([a.get_yticklabels()[0::-1] for a in ax[0:5]], visible=False)`

但这只是删除了一些滴答声,我不明白背后的逻辑。

4 个答案:

答案 0 :(得分:11)

您应该小心第一次通话的结果。你可能想把它称为

fig, ax = plt.subplots(5, sharex=True, squeeze=True)

如果你这样做,你就可以遍历所有的轴:

for a in ax:
    # get all the labels of this axis
    labels = ax.get_yticklabels()
    # remove the first and the last labels
    labels[0] = labels[-1] = ""
    # set these new labels
    a.set_yticklabels(labels)

如果您想保留隐藏标签的风格,可以使用

for a in ax:
    plt.setp(a.get_yticklabels()[0], visible=False)    
    plt.setp(a.get_yticklabels()[-1], visible=False)

答案 1 :(得分:5)

使用MaxNLocator

from matplotlib.ticker import MaxNLocator
ax.yaxis.set_major_locator(MaxNLocator(prune='both'))

答案 2 :(得分:1)

这不会返回您的期望:

>>> some_list = [1, 2, 3, 4]
>>> some_list[0::-1]
[1]  # and not [1, 4] !

使用切片表示法返回一个包含some_list项的列表,从位置0开始的示例开始并逐渐减少。这在第一步后停止......

我认为你必须这两步,如@DavidZwicker所示。

答案 3 :(得分:0)

另一种选择是使用before_script: - cd backend - npm install mocha chai ,如下所示

x_ticks[0].label1.set_visible

你会得到

invisible axis tick label