2017-09-15 10 views
3

J'ai créé un heatmap dans Seaborn, et j'ai une barre de couleur horizontale correspondante. J'ai ajouté un titre à la barre de couleurs, cependant, le titre apparaît sous la barre de couleurs quand je le veux réellement au-dessus. Y a-t-il des raisons pour lesquelles je peux changer cela? Et est-il possible de changer la taille de la police du titre et la taille des étiquettes sur la barre de couleurs?Déplacement du titre au-dessus de la barre de couleurs dans Seamap heatmap

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 

Voilà à quoi cela ressemble jusqu'à présent. Je veux que le titre "Nombre d'accidents" soit AU-DESSUS de la barre de couleurs, mais EN DESSOUS du heatmap. et je veux que la barre de couleurs soit aussi large que la carte de chaleur.

enter image description here

Répondre

2

Terrain votre colorbar dans la parcelle séparément comme dans cet exemple. Pour plus d'informations lire les commentaires:

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() 

enter image description here

+0

Je vois ce que vous avez fait ici, mais je ne veux pas bouger le titre « Nombre d'accidents de la circulation par combinaison jour et heure », que l'on est censé être au-dessus de la carte de chaleur. Ce que je veux, c'est que le titre "Nombre d'accidents" soit au-dessus de la barre de couleurs, alias dans la même position où le "Nombre d'accidents de la route par jour et combinaison d'heures" est dans l'image ci-dessus. –

+0

donne le titre aux axes 'ax' pas' cbar_ax'. – Serenity

+0

Mais ceci est de retour à la case 1 - exactement comment je l'ai eu au départ. Je veux que le titre "Nombre d'accidents" soit AU-DESSUS de la barre de couleurs, et que les ylabels (jours de la semaine) soient horizontaux ... –