set_gamma missing in python3



我有一些Python2.7中的遗留代码,这些代码创建了图形。这个过程的一部分涉及在颜色栏中设置gamma(老实说,我不知道set_gamma函数是做什么的,但它就在那里(。然而,这在Python3.x中不再有效。下面的示例

import numpy as np
import pylab as pl
fig = pl.figure(figsize=(6, 6))
ax0 = fig.add_subplot(111)
plt = ax0.imshow(np.random.randint(0, 100, (100, 100))
bound = list(np.arange(0, 100, 5))
cbar = fig.colorbar(plt, boundaries=bound, values=bound[:-1])
# here is the problem line; works in 2.7, not in 3.x
cbar.cmap.set_gamma(0.9)

两个问题:

  1. set_gamma做什么?

  2. 我可以在3.x中使用set_gamma(或等效程序(吗?

这与python版本无关。这是因为您使用了两个不同的matplotlib版本。其中一个默认值为LinearSegmentedColormap,另一个默认为ListedColormapset_gamma只对LinearSegmentedColormap有意义。

您可以通过以下代码找到哪些颜色图是LinearSegmentedColormap

from matplotlib.cm import cmap_d
for name, cmap in cmap_d.items():
print(name, type(cmap))

旧的默认"jet"颜色映射这样的LinearSegmentedColormap,因此在您的代码中添加颜色映射以明确使用

im = ax.imshow(..., cmap="jet")
关于CCD_ 8是什么:它是对颜色图的亮度和对比度的校正,https://en.wikipedia.org/wiki/Gamma_correction.由于0.9非常接近1,我实际上无法区分在这种情况下使用伽马校正与不使用它之间的区别。因此,如果有疑问,如果应用程序不需要特殊的颜色配置文件,我会说完全忽略它。

最新更新