Am experimentat cu seaborn și au o întrebare despre specificarea axelor proprietăți. În codul de mai jos, mi-am luat două abordări pentru crearea unui heatmap dintre o matrice și plasarea rezultatelor pe două seturi de axe ca în figura.
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
A=np.random.randn(4,4)
labels=['a','b','c','d']
fig, ax = plt.subplots(2)
sns.heatmap(ax =ax[0], data = A)
ax[0].set_xticks(range(len(labels)))
ax[0].set_xticklabels(labels,fontsize=10,rotation=45)
ax[0].set_yticks(range(len(labels)))
ax[0].set_yticklabels(labels,fontsize=10,rotation=45)
ax[1].set_xticks(range(len(labels)))
ax[1].set_xticklabels(labels,fontsize=10,rotation=45)
ax[1].set_yticks(range(len(labels)))
ax[1].set_yticklabels(labels,fontsize=10,rotation=45)
sns.heatmap(ax =ax[1], data = A,xticklabels=labels, yticklabels=labels)
plt.show()
Cifra rezultată se pare ca acest lucru:
În mod normal, aș lua mereu prima abordare de creare a heatmap și apoi specificarea axei proprietăți. Cu toate acestea, atunci când se creează o animație (pentru a fi încorporate pe o tkinter panza), care este ceea ce eu sunt în cele din urmă, interesat în a face, am găsit astfel o ordonare în funcție de actualizare duce să "pâlpâie" de etichetele axei. Cea de-a doua abordare va elimina acest efect, și, de asemenea, centre de marcajele în pătrate de-a lungul axelor.
Cu toate acestea, cea de-a doua abordare nu a roti axa y tickmark etichetele dorite. Există o soluție simplă pentru acest lucru?