代码之家  ›  专栏  ›  技术社区  ›  Liris

Matplotlib-沿同一轴的不同刻度标签对齐方式

  •  3
  • Liris  · 技术社区  · 7 年前

    我有一个有很多子图的图形,这样一个轴的最后一个记号标签就写在下一个轴的第一个记号标签上。 See example here

    由于我希望在设置时保持子地块之间的间距,因此我希望根据刻度进行不同的对齐,因为它可以通过以下方式生成:

        plt.xticks([0], ha = 'left')
        plt.xticks([0.2,0.4], ha = 'center')
        plt.xticks([0.6], ha = 'right')
    

    使用这种方法,图上只显示了最后一次调用XTICK。另一种方法是对齐第一个和最后一个勾号标签,使它们保持在子批次内。

    希望我明白了!

    有什么想法吗?

    1 回复  |  直到 7 年前
        1
  •  6
  •   ImportanceOfBeingErnest    7 年前

    一旦修复了记号,就可以访问和设置记号标签的对齐方式,以避免相邻子地块之间的重叠。

    import matplotlib.pyplot as plt
    
    plt.rcParams.update({"xtick.direction" : "in", 
                         "ytick.direction" : "in",
                         "figure.subplot.wspace" : 0.02,
                         "axes.xmargin" : 0,
                         "figure.figsize" : (5,2.4)})
    
    fig, axes = plt.subplots(1,2, sharey=True)
    for ax in axes:
        ax.plot([0,.3,.6], [0,1,2])
        # Fix ticks
        ax.set_xticks([0,.2,.4,.6])
        # Get ticklabels for fixed ticks
        ticklabels = ax.get_xticklabels()
        # set the alignment for outer ticklabels
        ticklabels[0].set_ha("left")
        ticklabels[-1].set_ha("right")
    
    plt.show()
    

    enter image description here