Как нарисовать неравномерную цветовую шкалу в Matplotlib - PullRequest
1 голос
/ 11 октября 2019

Пробовал среднюю норму и перечислил цветовую карту, но не знаю, как превратить фронт 0-20 в равномерный многоцветный (на рисунке показана аббревиатура, пожалуйста, не против), не знаю, как нарисовать эффект отрисунок! ! Помощь

enter image description here

Ответы [ 2 ]

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

В этом случае имеет смысл использовать BoundaryNorm и ListedColormap. Определите границы N+1 для цветов N цветовой карты и используйте spacing="proportional" в вызове цветовой панели.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import BoundaryNorm, ListedColormap

cmap = ListedColormap(["black", "darkred", "crimson", "salmon", "navy", "violet", "yellow"])
bounds = [0,1,2,3,4,10,20,30]
norm = BoundaryNorm(bounds, cmap.N)

fig, ax = plt.subplots()
sc = ax.scatter(*np.random.rand(2,100), c=np.random.rand(100)*30, cmap=cmap, norm=norm)
fig.colorbar(sc, orientation="horizontal", spacing="proportional")

plt.show()

enter image description here

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

Я думаю, вы должны использовать

MyCmap=colors.LinearSegmentedColormap.from_list("", list(zip(lvals,cvals)))

, как в этом решении (даже если оно для логарифмической шкалы). Посмотрите на конец принятого ответа.

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