Сопоставьте размер горизонтальной цветовой шкалы с шириной квадратной тепловой карты в Seaborn - PullRequest
0 голосов
/ 28 мая 2018

Я хочу создать квадратную тепловую карту в Сиборне с цветовой шкалой ниже.Вот код, который я использую:

#!/usr/bin/env python3

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

data = np.random.rand(5,4)

grid_kws = {"height_ratios": (.9, .05), "hspace": .5}
f, (ax, cbar_ax) = plt.subplots(2, gridspec_kw=grid_kws)

ax = sns.heatmap(data,
                 ax=ax,
                 cbar_ax=cbar_ax,
                 annot=True,
                 square=True,
                 cbar_kws={ "orientation": "horizontal" })

plt.savefig("heatmap.png")

А вот и вывод: output

Как сопоставить размер цветовой шкалы с размеромтепловая карта?

1 Ответ

0 голосов
/ 28 мая 2018

Вы можете использовать второй или третий вариант от мой ответ до позиционирования цветовой полосы .Поскольку это может быть неочевидно, как это сделать в случае с графикой морского побережья.

с использованием вспомогательных участков

Можно напрямую создать две строки вспомогательных участков, один для изображения и один для цветовой шкалы.как это делается в вопросе, нужно просто убедиться, что размер фигуры сжимает график горизонтально, а не вертикально.В этом случае попробуйте figsize=(3,5).

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

data = np.random.rand(5,4)

grid_kws = {"height_ratios": (.9, .05), "hspace": .5}
fig, (ax, cbar_ax) = plt.subplots(2, figsize=(3,5), gridspec_kw=grid_kws)

ax = sns.heatmap(data,
                 ax=ax,
                 cbar_ax=cbar_ax,
                 annot=True,
                 square=True,
                 cbar_kws={ "orientation": "horizontal" })

#plt.savefig("heatmap.png")
plt.show()

enter image description here

, используя разделитель осей

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

data = np.random.rand(5,4)

fig, ax = plt.subplots()

divider = make_axes_locatable(ax)
cbar_ax = divider.new_vertical(size="5%", pad=0.5, pack_start=True)
fig.add_axes(cbar_ax)
ax = sns.heatmap(data,
                 ax=ax,
                 cbar_ax=cbar_ax,
                 annot=True,
                 square=True,
                 cbar_kws={ "orientation": "horizontal" })


#plt.savefig("heatmap.png")
plt.show()

enter image description here

...