gpt4 book ai didi

python - matplotlib + python : figure size for fig. figimage 和 fig.savefig

转载 作者:行者123 更新时间:2023-11-28 16:43:32 25 4
gpt4 key购买 nike

我正在尝试将 png 图像添加到使用 python 中的 matplotlib 创建的绘图中。

这是我的剧情代码

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt


fig = plt.figure(figsize=(5.5,3),dpi=300)
ax = fig.add_subplot(111)
ax.grid(True,which='both')

ax.plot([0,1,2,3],[5,2,6,3],'o')

xlabel = ax.set_xlabel('xlab')
ax.set_ylabel('ylab')


from PIL import Image
import numpy as np

im = Image.open('./lib/Green&Energy-final-roundonly_xsmall.png')
im_w = im.size[0]
im_h = im.size[1]
# We need a float array between 0-1, rather than
# a uint8 array between 0-255
im = np.array(im).astype(np.float) / 255

fig.figimage(im,fig.bbox.xmax - im_w - 2,2,zorder=10 )
fig.savefig('test.png',bbox_extra_artists=[xlabel], bbox_inches='tight')

图有保存为pdf的513x306 px,但是fig.bbox.xmax的值为1650.0...这就是我的图没有出现的原因.. .. 我如何才能在打印图像之前知道图像的大小,以便知道将我的 im 放在哪里?

谢谢

最佳答案

这里发生了两件事:

  1. 正如@tcaswell 提到的,bbox_inches='tight' 裁剪生成的图像
  2. 您实际上并不是以 300 dpi 保存图像,而是以 100 dpi 保存图像

第二项是一个常见问题。默认情况下,matplotlib 以与图形的原始 dpi 不同的 dpi(可在 rc 参数中配置)保存图形。

要解决此问题,请将 fig.dpi 传递给 fig.savefig:

fig.savefig(filename, dpi=fig.dpi, ...)

为了避免裁剪,要么 a) 完全保留 bbox_inches='tight',要么 b) 调整图形内部的大小。完成 (b) 的一种快速方法是使用 fig.tight_layout,尽管它不会像使用 bbox_inches 和 savefig 那样“紧密”裁剪。

关于python - matplotlib + python : figure size for fig. figimage 和 fig.savefig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com