python - cmap - Cambiar la rotación de las etiquetas de ticks en el mapa de calor de Seaborn
matplotlib colorbar range (2)
Estoy trazando un mapa de calor en Seaborn. El problema es que tengo demasiados cuadrados en mi trama, por lo que las etiquetas xey están demasiado cerca unas de otras para ser útiles. Así que estoy creando una lista de xticks y yticks para usar. Sin embargo, al pasar esta lista a la función, se rotan las etiquetas en el gráfico. Sería realmente agradable que un bebé de mar abandone automáticamente algunas de las garrapatas, pero a menos que me gustaría ser capaz de tener los yticks en posición vertical.
import pandas as pd
import numpy as np
import seaborn as sns
data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))
yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['''' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks
xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['''' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks
sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)
También puede llamar a los métodos del objeto de mapa de calor:
g = sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)
g.set_yticklabels(g.get_yticklabels(), rotation = 0, fontsize = 8)
No estoy seguro de por qué esto no está en la documentación de sns.heatmap, pero los mismos métodos se describen aquí: http://seaborn.pydata.org/generated/seaborn.FacetGrid.html
Creo que estos métodos están disponibles para todos los objetos de la trama naciente, pero no pudieron encontrar una API general para eso.
seaborn
usa matplotlib
internamente, como tal, puedes usar funciones matplotlib
para modificar tus gráficos. plt.yticks
el código a continuación para usar la función plt.yticks
para establecer rotation=0
que soluciona el problema.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
data = pd.DataFrame(np.random.normal(size=40*40).reshape(40,40))
yticks = data.index
keptticks = yticks[::int(len(yticks)/10)]
yticks = ['''' for y in yticks]
yticks[::int(len(yticks)/10)] = keptticks
xticks = data.columns
keptticks = xticks[::int(len(xticks)/10)]
xticks = ['''' for y in xticks]
xticks[::int(len(xticks)/10)] = keptticks
sns.heatmap(data,linewidth=0,yticklabels=yticks,xticklabels=xticks)
# This sets the yticks "upright" with 0, as opposed to sideways with 90.
plt.yticks(rotation=0)
plt.show()