Как я настраиваю каждый цвет в cmap со значениями интервала разницы в подкарте Heatab Seaborn Python 3.6.0? - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть участок с тепловой картой seaborn в Python 3.6.0

import seaborn as sb
import matplotlib.pyplot as plt
data = [[1, 1.5, 6],
        [4, 1.6, 8],
        [0, 1.7, 10]
        ]

cmap = ["#0416FF", "#0094FF", "#00DAFF", "#006600", "#00A305"]
heat_map = sb.heatmap(data, cmap=cmap)
plt.show()

Но я хочу настроить каждый цвет в cbar с эквивалентными значениями данных диапазона, как это: Когда значения данных от нуля до 1, ячейки будут окрашены # 0416FF, а значения данных от 1 до 5, ячейки будут окрашены # 0094FF, а значения данных от 5 до 8, ячейки будут окрашены # 00A305 ... Это означает, что каждый цвет в cbar будет эквивалентен значению данных интервала разницы. Как я могу это сделать?

1 Ответ

0 голосов
/ 11 февраля 2020

Один из подходов заключается в создании списка цветов с синим цветом один раз, голубым 4 раза и зеленым 3 раза. И установить vmin=0, vmax=8, чтобы все значения были ограничены этим желаемым диапазоном.

Код ниже делает именно это. Значения добавляются в виде текста, чтобы легко проверить, что происходит.

import seaborn as sns
import matplotlib.pyplot as plt

data = [[1, 1.5, 6],
        [4, 1.6, 8],
        [0, 1.7, 10]]
colors = ["#0416FF", *(["#0094FF"]*4), *(["#00A305"]*3)]
heat_map = sns.heatmap(data, cmap=colors, vmin=0, vmax=8)
ax = plt.gca()
for i in range(len(data)):
    for j in range(len(data[0])):
        ax.text(j+0.5, i+0.5, data[i][j], color='gold', ha='center', va='center', fontsize=20)

resulting plot

...