【问题标题】:using sharex with odd number of subplots in matplotlib在matplotlib中使用带有奇数子图的sharex
【发布时间】:2017-12-13 19:39:52
【问题描述】:

我有奇数个像这样的子图:

import matplotlib.pyplot as plt 

fig, axes = plt.subplots(2, 2, sharex=True)
for i, ax in enumerate(axes.flat):
    ax.plot(range(10))
fig.delaxes(axes.flat[-1])

我希望它们都具有相同的 x 轴,但很容易将 x 刻度添加回右侧的绘图,因为不再有第四个绘图。

似乎应该有一个比手动添加每个子图更简单/更清洁的解决方案(类似于this answer),但我似乎找不到任何东西。谢谢。

【问题讨论】:

    标签: python matplotlib subplot


    【解决方案1】:

    您可以像这样使用setp 使ax[0][1] 的xtick 标签可见

    import matplotlib.pyplot as plt 
    
    fig, axes = plt.subplots(2, 2, sharex=True)
    for i, ax in enumerate(axes.flat):
        ax.plot(range(10))
    # for matploltib version 2.0.1
    plt.setp(axes[0][1].get_xticklabels(), visible=True)
    # for matplotlib version 2.1.1
    axes[0][1].xaxis.set_tick_params(which='both', labelbottom=True, labeltop=False)
    fig.delaxes(axes.flat[-1])
    plt.show()
    

    这将导致

    【讨论】:

    • 你使用的是什么版本的 matplotlib?我用 2.1.0 和 2.1.1(来自 conda-forge)尝试了这个,但无法得到这个结果(axes[0][1] 仍然没有刻度标签)。
    • 查看我的最新编辑。如果答案有帮助,请投票/接受答案。谢谢!
    • 成功了,谢谢!我赞成这个答案,但没有足够的声誉让它出现:)
    猜你喜欢
    • 2018-03-23
    • 2017-02-26
    • 2015-04-28
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2020-05-16
    相关资源
    最近更新 更多