Matplotlib imsave图像与日志规范

时间:2017-07-12 09:48:54

标签: python matplotlib logarithm colormap

如何使用Matplotlib使用以下colormap 选项保存图像?

目前的语法不允许我这样做吗?

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)

的文档

1 个答案:

答案 0 :(得分:1)

基本上使用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")

如果某些值为零,则日志图应如何显示可能并不明显。你可以在beforehands之前用nan值替换零(这就是LogNorm会做的)

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

或者您可以向数据添加少量数据,因此它们不再为零

logdata = np.log(data+0.02)