2016-04-28 62 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 x 6in)* 200 = 1600 x 1200像素PNG格式的图像。但是,请注意,如果使用bbox_inches='tight'删除图中的空白,则会在调整大小后发生,并返回更小的图像。

你可以通过删除图形轴plt.axis('off')来解决这个问题。如果您将DPI设置为与源图像的DPI匹配并相应地缩放figsize,则应该可以使用bbox_inches='tight'进行保存并返回与原始尺寸匹配的图像。