使用颜色条保持绘图中的原始图像分辨率

问题描述 投票:0回答:1

我有一些尺寸(高度 x 宽度)的灰度图像。我想生成该图像的绘图以及与图像对齐的颜色条,以便该绘图中图像的分辨率与原始分辨率“相同”。下面的代码采用 100 x 50 图像并生成带有颜色条的绘图: import numpy as np import matplotlib.pyplot as plt img_height, img_width = 100, 50 fig, ax = plt.subplots() ax.set_axis_off() image = ax.imshow( np.arange(img_height * img_width).reshape((img_height, img_width)), cmap="hot" ) colorbar = fig.colorbar(image) colorbar.set_label('label') plt.savefig('output.png', bbox_inches='tight')

生成的绘图尺寸为 398 x 312。涉及一些填充,但绘图中的图像肯定没有原始图像的 100 x 50 分辨率,而是更高。

我尝试修补

figsize

中的

fig, ax = plt.subplots(figsize=(...))
dpi
中的
plt.savefig('output.png', dpi=..., bbox_inches='tight')
,但情节都搞乱了:

有没有办法让这个在 matplotlib 中工作?我正在寻找类似这个解决方案,其中包括颜色栏:

Matplotlib - 无法以与原始图像相同的分辨率保存图像

我查看了以下相关问题,但答案对我的特定问题没有帮助:

使用颜色条时如何保持图像大小?

colorbar改变python中子图的大小

设置 Matplotlib 颜色条大小以匹配图形

python image matplotlib colorbar
1个回答
0
投票

import numpy as np import matplotlib.pyplot as plt img_height, img_width = 200, 100 dpi = 100 fig = plt.figure(dpi=100, figsize=(img_width/dpi*2, img_height/dpi)) ax = fig.add_axes([0, 0, 1/2, 1]) ax.set_axis_off() image = ax.imshow( np.arange(img_height * img_width).reshape((img_height, img_width)), cmap="hot" ) cax = fig.add_axes([1/2+0.02, 0.2, 0.1, 0.6]) colorbar = fig.colorbar(image, cax=cax) colorbar.set_label('label') plt.savefig('output.png', dpi=100)

最终的数字是 200 x 200,我必须将其做得更宽以容纳颜色条上的标签。

© www.soinside.com 2019 - 2024. All rights reserved.