【问题标题】:How do I stagger or offset x-axis labels in Matplotlib?如何在 Matplotlib 中错开或偏移 x 轴标签?
【发布时间】:2019-01-24 15:45:23
【问题描述】:

我想知道是否有一种简单的方法可以以类似于附加图像的方式偏移 x 轴标签。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您可以在轴标签中使用换行符 (\n)。您只需要将标签放在字符串列表中,并在每个其他字符串中添加一个换行符。这是一个最小的工作示例

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    
    xdata = [0,1,2,3,4,5]
    ydata = [1,3,2,4,3,5]
    xticklabels = ['first label', 'second label', 'third label', 'fourth label', 'fifth label', 'sixth label']
    
    f,ax = plt.subplots(1,2)
    
    ax[0].plot(xdata,ydata)
    ax[0].set_xticks(xdata)
    ax[0].set_xticklabels(xticklabels)
    ax[0].set_title('ugly overlapping labels')
    
    newxticklabels = [l if not i%2 else '\n'+l for i,l in enumerate(xticklabels)]
    ax[1].plot(xdata,ydata)
    ax[1].set_xticks(xdata)
    ax[1].set_xticklabels(newxticklabels)
    ax[1].set_title('nice offset labels')
    

    【讨论】:

      【解决方案2】:

      您可以为每个第二个标签添加一个换行符。

      import matplotlib.pyplot as plt
      import numpy as np; np.random.seed(42)
      
      x = ["".join(np.random.choice(list("ABCDEF"), 3)) for i in range(10)]
      y = np.cumsum(np.random.randn(10))
      
      fig, ax = plt.subplots(figsize=(3.5,3))
      ax.plot(x,y)
      
      ax.set_xticklabels(["\n"*(i%2) + l for i,l in enumerate(x)])
      
      fig.tight_layout()
      plt.show()
      

      【讨论】:

        【解决方案3】:

        您可以循环遍历您的 x 轴刻度,并为每隔一个刻度增加填充,使它们低于其他刻度。一个最小的例子是:

        import matplotlib.pyplot as plt
        
        fig, ax = plt.subplots()
        
        ax.plot([1,2,3,4,5])
        
        ax.set_xticks([1,2,3,4,5])
        ax.set_xticklabels(["A","B","C","D","E",])
        
        # [1::2] means start from the second element in the list and get every other element
        for tick in ax.xaxis.get_major_ticks()[1::2]:
            tick.set_pad(15)
        
        plt.show()
        

        【讨论】:

          猜你喜欢
          • 2014-08-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-28
          • 2011-09-18
          • 2020-11-09
          • 1970-01-01
          • 2020-11-30
          相关资源
          最近更新 更多