如何删除这些白色边框?为什么轴从-100,-100开始?最后,我如何设置最终png图像的大小?
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')
答案 0 :(得分: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)
这给出了PNG格式的(8英寸x 6英寸)* 200 = 1600 x 1200像素图像。但请注意,如果您使用bbox_inches='tight'
删除图周围的空白,则会在大小调整后发生,并返回较小的图像。
您可以通过使用plt.axis('off')
删除图形轴来解决此问题。如果您将DPI设置为与源图像的DPI相匹配并相应地缩放figsize,则应该能够使用bbox_inches='tight'
保存并返回与原始尺寸匹配的图像。