как установить последовательный положительный диапазон цветовой шкалы с наименьшим значением в середине цветовой полосы - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь установить цветовую шкалу, и я понимаю, что clim может сделать это.Я не могу понять, как вы установите его так, чтобы значение средней цветовой шкалы было наименьшим 1, например, в диапазоне от 1 до 52?

Я делаю это, потому что у меня есть номера недель, но я не хочу показывать большие скачки цвета с декабря по январь (значения 52 и 1)

РЕДАКТИРОВАТЬ: я говорю оцвета, так что концы цветовой шкалы похожи по цвету, но середина - самый другой цвет.Я не хочу менять значения в цветовой панели

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

вы не можете использовать clim для того, что вы хотите.вместо:

from matplotlib.colors import ListedColormap
from matplotlib.cm import get_cmap
inferno = get_cmap('inferno').colors
new_cmap = ListedColormap(inferno+inferno[::-1])

mid-centered cmap

0 голосов
/ 02 июня 2018

То, что вы просите, это циклическая карта цветов.На данный момент matplotlib предоставляет только одну циклическую карту цветов, а именно "hsv".Однако вы можете легко определить свою собственную цветовую карту и убедиться, что она является циклической, например, используя цвета ["gold", "red", "black", "navy", "gold"], где первый и последний цвета совпадают.

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
plt.rcParams['lines.markersize'] = 12

x = np.arange(200)
y = np.ones(200)

fig, ax = plt.subplots()
ax.scatter(x,y, c=x % 52, marker="|" )

ax.scatter(x,y-1, c=x % 52, cmap="hsv", marker="|" )

colors = ["gold", "red", "black", "navy", "gold"]
cmap = mcolors.LinearSegmentedColormap.from_list("", colors)
ax.scatter(x,y-2, c=x % 52, cmap=cmap, marker="|" )

ax.set_yticks([-1,0,1])
ax.set_yticklabels(["custom", "hsv", "viridis", ])
ax.margins(y=0.4)
plt.show()

enter image description here

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