如何删除轴、图例和白色填充

新手上路,请多包涵

我想将颜色图应用于图像,并编写生成的图像,而不使用轴、标签、标题或任何由 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)

它成功地移除了图形的轴,但保存的图形显示了一个白色填充,并在实际图像周围有一个框架。

如何删除它们(至少是白色填充)?

原文由 sunmat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 679
2 个回答

axis('off') 方法比单独更改每个轴和边框更简洁地解决了其中一个问题。然而,它仍然在边界周围留下空白区域。将 bbox_inches='tight' 添加到 savefig 命令几乎可以让您到达那里;您可以在下面的示例中看到,剩下的空白要小得多,但仍然存在。

较新版本的 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')

在此处输入图像描述

原文由 Hooked 发布,翻译遵循 CC BY-SA 4.0 许可协议

我从 matehat 那里学到了这个技巧,在这里

 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')

产量

在此处输入图像描述

原文由 unutbu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题