Перемещение заголовка над цветовой шкалой в тепловой карте Seaborn
Я сделал тепловую карту в Seaborn, и у меня есть соответствующая горизонтальная цветная полоса. Я добавил заголовок к цветовой панели, однако заголовок появляется под цветовой панелью, когда я на самом деле хочу его выше. Есть ли некоторые, почему я могу изменить это? И можно ли изменить размер шрифта заголовка и размер надписей на цветовой панели?
fig, ax = plt.subplots(figsize=(30,12))
graph = sns.heatmap(df_pivot, cmap="Blues", linecolor="white", linewidths=0.1,
cbar_kws={"orientation": "horizontal", "shrink":0.40, "aspect":40, "label": "Number of accidents"})
ax.set_title("Number of traffic accidents per day & hour combination",
fontsize=30, fontweight="bold")
from matplotlib import rcParams
rcParams['axes.titlepad'] = 70 # Space between the title and graph
locs, labels = plt.yticks() # Rotating row labels
plt.setp(labels, rotation=0) # Rotating row labels
ax.xaxis.tick_top() # x axis on top
ax.xaxis.set_label_position('top')
graph.tick_params(axis='both',labelsize=15) # Tick label size
graph
Вот как это выглядит до сих пор. Я хочу, чтобы заголовок "Количество несчастных случаев" был ВЫШЕ цветовой шкалы, но НИЖЕ тепловой карты. и я хочу, чтобы цветовая полоса была такой же широкой, как тепловая карта.
1 ответ
Нарисуйте вашу цветовую панель в отдельном графике, как в этом примере. Для получения дополнительной информации читайте комментарии:
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
# set height ratios of heatmap and coresponding colorbar
# hspace shows space between plots
# adjust hspace to put your title of colorbar correctly
grid_kws = {"height_ratios": (.9, .05), "hspace": .15}
f, (ax, cbar_ax) = plt.subplots(2, gridspec_kw=grid_kws, figsize=(30,12))
ax = sns.heatmap(flights, ax=ax,
cbar_ax=cbar_ax,
cbar_kws={"orientation": "horizontal","label": "Number of accidents"})
# set title and set font of title
ax.set_title("Number of traffic accidents per day & hour combination",
fontsize=30, fontweight="bold")
# set font size of colorbar labels
cbar_ax.tick_params(labelsize=25)
plt.show()