Как ограничить пределы отображения цветовой полосы в matplotlib - PullRequest
0 голосов
/ 07 января 2019

Я строю 3 канала измерений моего временного ряда, которые более или менее сосредоточены вокруг (-80). Недостающие значения заполнены (-50), чтобы они приобрели ярко-желтый цвет и контрастировали с остальной частью графика. Численно это не имеет никакого значения. Смотрите рисунок и код ниже:

f, ax = plt.subplots(figsize=(12.5, 12.5))
sns.heatmap(df.loc[:, ['Ch2', 'Ch3', 'Ch1']].fillna(-50)[:270], cmap='viridis', yticklabels=27, cbar=True, ax=ax)

Как сохранить цветовой диапазон, но ограничить масштаб отображения (т. Е. Тепловая карта должна оставаться неизменной, но цветная полоса находится в диапазоне только от -70 до -90)? enter image description here (Обратите внимание, что на вопрос о том, как установить максимальное значение для цветовой шкалы на тепловой карте морского побережья уже был дан ответ, и это не то, к чему я стремлюсь, я хочу, чтобы vmin и vmax остались такими же, как они).

1 Ответ

0 голосов
/ 07 января 2019

Вы можете установить пределы осей цветовой шкалы аналогично любым другим осям.

ax.collections[0].colorbar.ax.set_ylim(-90,-70)

Полный пример:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

data = np.random.rand(82*3)*20-90
data[np.random.randint(1,82*3, size=20)] = np.nan
df = pd.DataFrame(data.reshape(82,3))

ax = sns.heatmap(df, vmin=-90, vmax=-50, cmap="viridis")
ax.set_facecolor("gold")
ax.collections[0].colorbar.ax.set_ylim(-90,-70)
plt.show()

enter image description here

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