具有对数范数的 Matplotlib imsave 图像

Matplotlib imsave image with log norm

我如何使用 Matplotlib 使用以下颜色映射 选项保存图像?

当前语法不允许我这样做?

plt.imsave('C:/Users/Desktop/Img/image'+'_'+ str(i)+'.png', data)

我想在上面添加这个:

norm=matplotlib.colors.LogNorm()
cmap=my_cmap

理想情况下我想要:

plt.imsave('C:/Users/Desktop/Img/image'+'_'+ str(i)+'.png', data, norm=matplotlib.colors.LogNorm(), cmap=my_cmap)

但这不可能。

matplotlib.image.imsave(fname, arr, vmin=None, vmax=None, cmap=None, format=None, origin=None, dpi=100)

的文档

从本质上讲,使用 LogNorm 与取数据的对数相同。

import matplotlib.pyplot as plt
import numpy as np

data = plt.imread("house.png").mean(axis=2)
logdata = np.log(data)
plt.imsave("logimage.png", logdata, cmap="viridis")

如果某些值为零,则对数图的外观可能并不明显。您可以事先用 nan 值替换零(这是 LogNorm 会做的)

data[data == 0.] = np.nan
logdata = np.log(data)

或者您可以向数据中添加少量数据,这样它们就不再为零

logdata = np.log(data+0.02)