Remove padding from matplotlib plotting

后端 未结 4 937
心在旅途
心在旅途 2021-02-07 13:24

I am plotting an image in matplotlib, and it keeps giving me some padding. This is what I have tried:

def field_plot():
    x = [i[0] for i in path]
    y = [i[1         


        
相关标签:
4条回答
  • 2021-02-07 13:40

    Just add plt.tight_layout() before plt.savefig() !!

    plt.figure(figsize=(16, 10))
    
    # ... Doing Something ...
    
    plt.tight_layout()
    plt.savefig('wethers.png')
    plt.show()
    
    0 讨论(0)
  • 2021-02-07 13:46

    All previous approaches didn't quite work for me, they all left some padding around the figure.

    The following lines successfully removed the white or transparent padding that was left:

    plt.axis('off')
    ax = plt.gca()
    ax.xaxis.set_major_locator(matplotlib.ticker.NullLocator())
    ax.yaxis.set_major_locator(matplotlib.ticker.NullLocator())
    plt.savefig(IMG_DIR + 'match.png', pad_inches=0, bbox_inches='tight', transparent=True)
    
    0 讨论(0)
  • 2021-02-07 13:49

    Try using pad_inches=0, i.e.

    plt.savefig( IMG_DIR + 'match.png',bbox_inches='tight', transparent="True", pad_inches=0)
    

    From the documentation:

    pad_inches: Amount of padding around the figure when bbox_inches is ‘tight’.

    I think the default is pad_inches=0.1

    0 讨论(0)
  • 2021-02-07 13:58

    This worked for me. After plotting, get the Axes object from plt using ax = plt.gca(). Then set the xlim, and ylim of ax object to match image width and image height. Matplotlib seems to automatically increase xlim and ylim of viewing area when you plot. Note that while setting y_lim you have to invert the order of coordinates.

    for i in range(len(r)):
      plt.plot(r[i][0],r[i][1],c=(rgb_number(speeds[i]),0,1-rgb_number(speeds[i])),linewidth=1)
    
    plt.axis('off')
    ax = plt.gca();
    ax.set_xlim(0.0, width_of_im);
    ax.set_ylim(height_of_im, 0.0);
    plt.savefig( IMG_DIR + 'match.png',bbox_inches='tight', transparent="True")
    
    0 讨论(0)
提交回复
热议问题