Jak mohu otočit osu tickmark štítky-li nastavit vlastnosti osy, než aby můj pozemek?

0

Otázka

Já jsem experimentoval s seaborn a máte otázku o určení sekery vlastnosti. V mém kódu níže, vzal jsem dva přístupy k vytváření heatmap matice a uvádění výsledků na dvě sady osách v obrázku.

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

Výsledný obrázek vypadá takto:

enter image description here

Normálně bych se vždy na prvním přístupu, vytváření heatmap a určení osy vlastnosti. Nicméně, při vytváření animace (bude vložen na tkinter canvas), což je to, co jsem nakonec zájem v tom, že jsem našel takové objednávce v mém aktualizace funkce vede k "blikání" popisky osy. Druhý přístup bude eliminovat tento efekt, a to také centra stupnice do čtverce podél osy.

Nicméně, druhý přístup není otočit osu y tickmark štítky podle potřeby. Je tam jednoduchý opravit?

matplotlib python
2021-11-23 23:04:06
1

Nejlepší odpověď

1

Nejsem si jistý, že tohle je to, co hledáte. Vypadá to, že si vytvořit svůj figure po změně yticklabels. takže figure je přepsání yticklabels.

Níže by se opravit váš problém.

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)))
sns.heatmap(ax =ax[1], data = A,xticklabels=labels, yticklabels=labels)
ax[1].set_yticklabels(labels,fontsize=10,rotation=45)

plt.show() 

enter image description here

2021-11-24 03:33:46

To funguje dobře pro jednoho pozemku, ale neřeší "blikání" problém, když jsem se ji začlenit do aktualizace funkce použité v animaci. Zdá se, že jen tím, že nastavení osy vlastnosti před zavoláním sns.heatmap lze eliminovat blikání. Také jsem se snažil nastavení xlabels, ylabels=False uvnitř sns.heatmap a pak nastavení osy vlastnosti později, ale to neřeší problém. Asi jsem měla zahrnuty animace kódu, stejně v mém původním příspěvku. Měl bych vytvořit nový příspěvek včetně animace kód nebo upravit výše uvedené? Omlouvám se za to, že více jasné.
fishbacp

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................