set_gamma отсутствует в python3 - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть какой-то устаревший код из Python2.7, который создал фигуры.Часть процесса включала установку гаммы в цветовой панели (честно говоря, я не знаю, что делает функция 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. можно ли использовать set_gamma (илиэквивалент) в 3.x?

1 Ответ

0 голосов
/ 29 ноября 2018

Это не имеет ничего общего с версией Python.Дело в том, что вы используете две разные версии matplotlib.Один из них имеет LinearSegmentedColormap по умолчанию, другой имеет ListedColormap по умолчанию.set_gamma имеет смысл только для LinearSegmentedColormap с.

Вы можете узнать, какие цветовые карты LinearSegmentedColormap, используя этот код:

from matplotlib.cm import cmap_d

for name, cmap in cmap_d.items():
    print(name, type(cmap))

Старое значение по умолчанию "jet" colormap это такой LinearSegmentedColormap, следовательно, в вашем коде добавьте цветовую карту для явного использования,

im = ax.imshow(..., cmap="jet")

Что такое gamma: это коррекция яркости цветовой карты инапротив, https://en.wikipedia.org/wiki/Gamma_correction. Так как 0,9 довольно близко к 1, я не могу на самом деле определить разницу между использованием гамма-коррекции в этом случае и неиспользованием ее.Поэтому, если вы сомневаетесь и если приложение не требует специального цветового профиля, я бы сказал, просто оставьте его полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...