cmap python heatmap seaborn

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