python 如何完全删除情节周围的白色

tyu7yeag  于 2023-09-29  发布在  Python
关注(0)|答案(2)|浏览(107)

我正试图绘制一个散点图的形象,没有任何白色周围。
如果我只绘制图像如下,那么就没有白色:

fig = plt.imshow(im,alpha=alpha,extent=(0,1,1,0))
plt.axis('off')
fig.axes.axis('tight')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)

但我在图像上添加了一个散点图,如下所示:

fig = plt.scatter(sx, sy,c="gray",s=4,linewidths=.2,alpha=.5)
fig.axes.axis('tight')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)

此时,通过使用以下savefig命令,在图像周围添加白色:

plt.savefig(im_filename,format="png",bbox_inches='tight',pad_inches=0)

有什么办法可以把白色的地方去掉吗?

vlf7wbxs

vlf7wbxs1#

通过切换到mpl面向对象的样式,您可以在相同的轴上绘制图像和散点图,因此只需使用ax.imshowax.scatter设置一次空白。
在下面的示例中,我使用subplots_adjust删除了轴周围的空白,并使用ax.axis('tight')将轴限制设置为数据范围。

import matplotlib.pyplot as plt
import numpy as np

# Load an image
im = plt.imread('stinkbug.png')

# Set the alpha
alpha = 0.5

# Some random scatterpoint data
sx = np.random.rand(100)
sy = np.random.rand(100)

# Creare your figure and axes
fig,ax = plt.subplots(1)

# Set whitespace to 0
fig.subplots_adjust(left=0,right=1,bottom=0,top=1)

# Display the image
ax.imshow(im,alpha=alpha,extent=(0,1,1,0))

# Turn off axes and set axes limits
ax.axis('tight')
ax.axis('off')

# Plot the scatter points
ax.scatter(sx, sy,c="gray",s=4,linewidths=.2,alpha=.5)

plt.show()

pftdvrlh

pftdvrlh2#

这适用于在show和savefig中将图像扩展到全屏,没有框架,脊椎或刻度,注意,一切都在plt示例中完成,无需创建子图,轴示例或bbox:

from matplotlib import pyplot as plt

# create the full plot image with no axes 
plt.subplots_adjust(left=0, right=1, bottom=0, top=1)
plt.imshow(im, alpha=.8)
plt.axis('off')

# add scatter points
plt.scatter(sx, sy, c="red", s=10, linewidths=.2, alpha=.8)

# display the plot full screen (backend dependent)
mng = plt.get_current_fig_manager()
mng.window.state('zoomed')

# save and show the plot
plt.savefig('im_filename_300.png', format="png", dpi=300)
plt.show()
plt.close()  # if you are going on to do other things

这在至少600dpi下有效,这远远超出了正常显示宽度下的原始图像分辨率。这对于显示OpenCV图像非常方便,而不会使用

import numpy as np
im = img[:, :, ::-1]

在plt.imshow之前转换颜色格式。

相关问题