Как получить более светлую «реактивную» цветовую карту в matplotlib - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь сделать цвет фона для кластеров, но не знаю, как сделать цветовую карту струи ярче или темнее. Может ли кто-нибудь помочь мне?

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Это, безусловно, будет зависеть от того, как вы определяете «светлее» или «темнее». Полезным определением будет умножение канала яркости цветов в пространстве HSL. Это может выглядеть как

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import colors as mcolors
import colorsys


def man_cmap(cmap, value=1.):
    colors = cmap(np.arange(cmap.N))
    hls = np.array([colorsys.rgb_to_hls(*c) for c in colors[:,:3]])
    hls[:,1] *= value
    rgb = np.clip(np.array([colorsys.hls_to_rgb(*c) for c in hls]), 0,1)
    return mcolors.LinearSegmentedColormap.from_list("", rgb)

cmap = plt.cm.get_cmap("jet")

fig, (ax1, ax2, ax3) = plt.subplots(3)
x=np.linspace(0,1,64)

sc = ax1.scatter(x,np.ones_like(x), c=x, cmap=cmap)
fig.colorbar(sc, ax=ax1, orientation="horizontal")

sc = ax2.scatter(x,np.ones_like(x), c=x, cmap=man_cmap(cmap, 0.75))
fig.colorbar(sc, ax=ax2, orientation="horizontal")

sc = ax3.scatter(x,np.ones_like(x), c=x, cmap=man_cmap(cmap, 1.25))
fig.colorbar(sc, ax=ax3, orientation="horizontal")

plt.show()

enter image description here

0 голосов
/ 08 октября 2019

может быть, это поможет вам: https://scipy -cookbook.readthedocs.io / items / Matplotlib_ColormapTransformations.html

Там вы найдете:

light_jet = cmap_map(lambda x: x/2 + 0.5, matplotlib.cm.jet)

x, y = np.mgrid[1:2, 1:10:0.01]
plt.figure(figsize=[15, 1])
plt.imshow(y, cmap=light_jet, aspect='auto')
plt.axis('off')
plt.show()

...