我是Python和Matplotlib的新手,我想简单地将colormap应用于图像并编写结果图像,而不使用轴、标签、标题或通常由matplotlib自动添加的任何东西。下面是我所做的:
def make_image(inputname,outputname):
data = mpimg.imread(inputname)[:,:,0]
fig = plt.imshow(data)
fig.set_cmap('hot')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)
plt.savefig(outputname)
它成功地删除了图形的轴,但保存的图形在实际图像周围显示了一个白色填充和一个框架。如何删除它们(至少是白色填充)?谢谢
发布于 2012-02-15 22:46:25
我认为命令axis('off')
处理其中一个问题比单独更改每个轴和边界更简洁。但是,它仍然会留下边界周围的空白。在savefig
命令中添加bbox_inches='tight'
几乎就可以实现这一点,您可以在下面的示例中看到,留出的空格要小得多,但仍然存在。
请注意,更新版本的matplotlib可能需要bbox_inches=0
而不是字符串'tight'
(通过@episodeyang和@kadrach)
from numpy import random
import matplotlib.pyplot as plt
data = random.random((5,5))
img = plt.imshow(data, interpolation='nearest')
img.set_cmap('hot')
plt.axis('off')
plt.savefig("test.png", bbox_inches='tight')
发布于 2012-02-15 22:40:14
我是从matehat, here那里学到这个技巧的
import matplotlib.pyplot as plt
import numpy as np
def make_image(data, outputname, size=(1, 1), dpi=80):
fig = plt.figure()
fig.set_size_inches(size)
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
plt.set_cmap('hot')
ax.imshow(data, aspect='equal')
plt.savefig(outputname, dpi=dpi)
# data = mpimg.imread(inputname)[:,:,0]
data = np.arange(1,10).reshape((3, 3))
make_image(data, '/tmp/out.png')
收益率
发布于 2014-10-28 22:15:07
可能最简单的解决方案:
我简单地结合了问题中描述的方法和钩子答案中的方法。
fig = plt.imshow(my_data)
plt.axis('off')
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)
plt.savefig('pict.png', bbox_inches='tight', pad_inches = 0)
在这段代码之后,没有空格和框架。
https://stackoverflow.com/questions/9295026
复制相似问题