我有一些尺寸(高度 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 - 无法以与原始图像相同的分辨率保存图像
使用颜色条时如何保持图像大小?colorbar改变python中子图的大小设置 Matplotlib 颜色条大小以匹配图形
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,我必须将其做得更宽以容纳颜色条上的标签。