Удалите прокладку из графика matplotlib - программирование

Удалите прокладку из графика matplotlib

Я рисую изображение в matplotlib, и он продолжает давать мне некоторое дополнение. Это то, что я пробовал:

def field_plot():
    x = [i[0] for i in path]
    y = [i[1] for i in path]
    plt.clf()
    plt.axis([0, 560, 0, 820])
    im = plt.imread('field.jpg')
    field = plt.imshow(im)
    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')
    plt.savefig( IMG_DIR + 'match.png',bbox_inches='tight', transparent="True")
    plt.clf()

This is how i see the image

4b9b3361

Ответ 1

Попробуйте использовать pad_inches=0, т.е.

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

В документации :

pad_inches: количество отступов вокруг фигуры, когда bbox_inches "Плотно.

Я думаю, что по умолчанию pad_inches=0.1

Ответ 2

Это сработало для меня. После построения рисунка возьмите объект Axes из plt, используя ax = plt.gca(). Затем установите xlim и ylim объекта ax для соответствия ширине изображения и высоте изображения. Matplotlib, кажется, автоматически увеличивает xlim и ylim области просмотра, когда вы планируете. Обратите внимание, что при установке y_lim вы должны инвертировать порядок координат.

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")