2016-04-28 2 views
1

Как я могу удалить эти белые границы? Почему оси начинаются от -100, -100? И, наконец, как я могу установить размер для окончательного png-изображения?Удалить границу белого и установить размер конечного изображения matplotlib

import matplotlib.pyplot as plt 
import matplotlib 
import numpy as np 

im = plt.imread('pitch.png') 
implot = plt.imshow(im, aspect='auto') 

dpi=96 

if dpi is None: 
     dpi = matplotlib.rcParams['savefig.dpi'] 
dpi = float(dpi) 

fig = plt.figure(figsize=(620/dpi, 579/dpi), dpi=dpi) 
ax = fig.add_axes([0, 0, 1, 1], frame_on=False) 
ax.imshow(im, interpolation='none') 

x, y = np.genfromtxt('coords.csv', delimiter=',', unpack=True) 
plt.plot(x,y, "o") 

plt.savefig('dybala.png', bbox_inches='tight') 

enter image description here

ответ

0

Белых границ обусловлены использование imshow and plot in the same plot. При использовании только imshow пределы оси будут установлены в пределах предела изображения. Однако при построении графика осей обновляются автоматически.

Простейшим решением для этого является получение пределов осей после imshow и их повторное нанесение на рисунок после печати. Например, сначала нужно получить пределы:

implot = plt.imshow(im, aspect='auto') 
xlim, ylim = plt.xlim(), plt.ylim() 

Затем установите их:

plt.plot(x,y, "o") 
plt.xlim(xlim) 
plt.ylim(ylim) 

Это должно удалить пробелы.

Чтобы установить размер конечного рисунка сохранен, вы можете передать figsize=(w,h) (размер в дюймах) для savefig, наряду с dpi (для точек на дюйм), чтобы определить окончательный размер изображения. Если вы ищете конкретный размер , вы можете рассчитать это по w dpi, h dpi.

plt.savefig('dybala.png', figsize=(8,6), dpi=200) 

Это дает (8in х 6 дюймов) * 200 = 1600 х 1200 пикселей изображения в формате PNG. Однако обратите внимание, что если вы используете bbox_inches='tight' для удаления пробелов вокруг фигуры, это произойдет после размер и вернет меньшее изображение.

Вы можете немного обойти это, сняв оси фигур с помощью plt.axis('off'). Если вы установили DPI в соответствие с исходным изображением и соответствующим образом нарисуйте figsize, вы должны сохранить его с помощью bbox_inches='tight' и вернуть изображение, соответствующее исходным размерам.

Смежные вопросы