修复Python matplot

修复Python matplot,python,matplotlib,Python,Matplotlib,我试图制作一个漂亮的条形图,但遇到以下问题: 尽管我尝试了ax.grid的各种zorder参数,但水平网格线在条的前面。我怎样才能把网格移到后面 紧凑的布局并不紧凑。我试过fig.tight\u layout()和plt.tight\u layout()。我怎样才能从四面自动裁剪图片 是否有一种方法来定位xTick文本,使每个“长文本”与其xTick对齐 正如@JohanC在评论中所说的,您可以使用ax.set\u axisbelow(True)来显示栏后面的网格线 调用时,您可以使用pad

我试图制作一个漂亮的条形图,但遇到以下问题:

  • 尽管我尝试了
    ax.grid
    的各种zorder参数,但水平网格线在条的前面。我怎样才能把网格移到后面
  • 紧凑的布局并不紧凑。我试过
    fig.tight\u layout()
    plt.tight\u layout()
    。我怎样才能从四面自动裁剪图片
  • 是否有一种方法来定位xTick文本,使每个“长文本”与其xTick对齐
  • 正如@JohanC在评论中所说的,您可以使用
    ax.set\u axisbelow(True)
    来显示栏后面的网格线

  • 调用时,您可以使用
    pad
    值调整图形和子地块的adge之间的空间量:

    pad
    float
    ,默认值:1.08

    图形边缘和子批次边缘之间的填充,作为字体大小的一部分

  • 设置xticklabel时,可以使用
    水平对齐
    ha
    kwarg控制刻度标签的对齐

  • 例如:

    import matplotlib.pyplot as plt
    
    def show_mountains(bins, fortyfive=False):
        fig, ax = plt.subplots()
        ax.grid(axis='y', zorder=-100, linewidth=0.2)
        fig.tight_layout()
    
        xTicks = list(range(len(bins)))
    
        if fortyfive:
            plt.xticks(rotation=45)
        ax.set_xticks(xTicks)
        ax.set_xticklabels(["longText"]*len(bins), fontsize=13, ha='right')
    
        ax.set_axisbelow(True)
    
        plt.bar(xTicks, bins, width=0.65, color="#6186f1")
        plt.tight_layout(pad=0.1)
    
        plt.close()
    
    domain_bins = [52, 47, 36, 15, 14, 11, 18]
    show_mountains(domain_bins, True)
    
    生成此绘图:

  • 正如@JohanC在评论中所说的,您可以使用
    ax.set\u axisbelow(True)
    来显示栏后面的网格线

  • 调用时,您可以使用
    pad
    值调整图形和子地块的adge之间的空间量:

    pad
    float
    ,默认值:1.08

    图形边缘和子批次边缘之间的填充,作为字体大小的一部分

  • 设置xticklabel时,可以使用
    水平对齐
    ha
    kwarg控制刻度标签的对齐

  • 例如:

    import matplotlib.pyplot as plt
    
    def show_mountains(bins, fortyfive=False):
        fig, ax = plt.subplots()
        ax.grid(axis='y', zorder=-100, linewidth=0.2)
        fig.tight_layout()
    
        xTicks = list(range(len(bins)))
    
        if fortyfive:
            plt.xticks(rotation=45)
        ax.set_xticks(xTicks)
        ax.set_xticklabels(["longText"]*len(bins), fontsize=13, ha='right')
    
        ax.set_axisbelow(True)
    
        plt.bar(xTicks, bins, width=0.65, color="#6186f1")
        plt.tight_layout(pad=0.1)
    
        plt.close()
    
    domain_bins = [52, 47, 36, 15, 14, 11, 18]
    show_mountains(domain_bins, True)
    
    生成此绘图:


    对于网格线:
    ax.set\u axis低于(True)
    ?您是否尝试过
    plt.tight_layout()
    的填充参数?关于刻度标签旋转,请参见
    ax。下面的set\u axis(True)
    非常有用<代码>plt.紧密布局(pad=0,w\u pad=0,h\u pad=0)也保持了非常紧密的布局。最后:
    plt.xticks(rotation=45,ha=“right”)
    提供了完美的对齐方式!如果您/其他人还没有开始,我会将其编辑为答案。对于网格线:
    ax.set\u axisdown(True)
    ?您是否尝试过
    plt.tight_layout()
    的填充参数?关于刻度标签旋转,请参见
    ax。下面的set\u axis(True)
    非常有用<代码>plt.紧密布局(pad=0,w\u pad=0,h\u pad=0)也保持了非常紧密的布局。最后:
    plt.xticks(rotation=45,ha=“right”)
    提供了完美的对齐方式!如果您/其他人还没有开始,我会将此编辑为答案。