Seaborn Heatmap apmācība | Python datu vizualizācija

Blogs

Seaborn Heatmap apmācība | Python datu vizualizācija

Seaborn Heatmap apmācība | Python datu vizualizācija

Jūs uzzināsit, kas ir siltuma karte, kā to izveidot, kā mainīt krāsas, pielāgot fonta lielumu un daudz ko citu, tāpēc sāksim darbu.



Kas ir siltuma karte?

Siltuma karte ir veids, kā attēlot datus divdimensiju formā. Datu vērtības diagrammā ir attēlotas kā krāsas. Siltuma kartes mērķis ir sniegt krāsainu vizuālu informācijas kopsavilkumu.

Izveidojiet siltuma karti

Lai izveidotu siltuma karti programmā Python, mēs varam izmantot jūras ragu bibliotēku. Jūras ragu bibliotēka ir uzcelta virs Matplotlib. Seaborn bibliotēka nodrošina augsta līmeņa datu vizualizācijas saskarni, kurā mēs varam uzzīmēt savu matricu.



Šajā apmācībā mēs izmantosim šādus Python komponentus:

Lai instalētu jūru, izpildiet komandu pip šādi:



pip install seaborn

Seaborn atbalsta šādus gabalus:

Labi, tagad izveidosim siltuma karti:

Importējiet šādus nepieciešamos moduļus:

import numpy as np import seaborn as sb import matplotlib.pyplot as plt

Mēs importējām numpy modulis lai radītu nejaušu skaitļu masīvu starp noteiktu diapazonu, kas tiks attēlots kā siltuma karte.

data = np.random.rand(4, 6)

Tiek izveidots divdimensiju masīvs ar 4 rindām un 6 kolonnām. Tagad saglabāsim šīs masīva vērtības siltuma kartē. Mēs varam izveidot siltuma karti, izmantojot jūras ragu moduļa siltuma kartes funkciju. Tad mēs nodosim datus šādi:

heat_map = sb.heatmap(data)

Izmantojot matplotlib, izejā parādīsim siltuma karti:

plt.show()

Apsveicam! Jūsu pirmā siltuma karte ir tikko izveidota!

Noņemiet siltuma kartes x ērču etiķetes

Vērtības x asī un y asī katram blokam siltuma kartē sauc par ērču etiķetēm. Atzīmju etiķetes tiek pievienotas pēc noklusējuma. Ja mēs vēlamies noņemt ērču etiķetes, mēs varam iestatīt jūras dzimuma karstuma kartes atribūtu xticklabel vai ytickelabel uz False, kā norādīts tālāk.

heat_map = sb.heatmap(data, xticklabels=False, yticklabels=False)

Iestatiet siltuma kartes x ass etiķeti

Mēs varam pievienot iezīmi x asij, izmantojot Matplotlib atribūtu xlabel, kā parādīts šādā kodā:

>>> plt.xlabel('Values on X axis')

Rezultāts būs šāds:

Noņemiet siltuma kartes un atzīmējiet etiķetes

Pēc noklusējuma tiek pievienotas y ass etiķetes. Lai tos noņemtu, mēs varam iestatīt yticklabels uz false.

videozvanu api vietnēm
heat_map = sb.heatmap(data, yticklabels=False)

Iestatiet siltuma kartes y ass etiķeti

Jūs varat pievienot iezīmi y asij, izmantojot Matplotlib atribūtu ylabel, kā parādīts attēlā:

>>> data = np.random.rand(4, 6) >>> heat_map = sb.heatmap(data) >>> plt.ylabel('Values on Y axis')

Siltuma kartes krāsas maiņa

Jūras ragu karstuma kartes krāsu var mainīt, izmantojot krāsu karti, izmantojot siltuma kartes atribūtu cmap.

Apsveriet tālāk norādīto kodu.

>>> heat_map = sb.heatmap(data, cmap='YlGnBu') >>> plt.show()

Šeit cmap ir vienāds YlGnBu kas attēlo šādu krāsu:

Seaborn siltuma kartē mums ir trīs dažādu veidu krāsu kartes.

  1. Secīgas krāsu shēmas
  2. Dažāda krāsu palete
  3. Diskrēti dati

Secīga krāsu karte

Secīgā krāsu karte tiek izmantota, ja dati svārstās no zemas vērtības līdz lielai vērtībai. Secīgos krāsu karšu krāsu kodus var izmantot ar funkciju heatmap () vai kdeplot ().

Secīgā krāsu kartē ir šādas krāsas:

Šis attēls ir ņemts no Matplotlib.org .

Secīga kubu spirāles palete

Kubes spirāle ir secīgas krāsu kartes forma. Kubes spirāli izmanto, ja spilgtums ir palielināts lineāri un ja ir neliela nokrāsu atšķirība.

Cubehelix palete izskatās šādi:

Šo paleti varat ieviest kodā, izmantojot atribūtu cmap:

>>> heat_map = sb.heatmap(data, cmap='cubehelix')

Rezultāts būs šāds:

Dažāda krāsu palete

Atšķirīgo krāsu paleti varat izmantot, ja siltuma kartē ir svarīgas augstās un zemās vērtības.

Atšķirīgā palete rada paleti starp divām HUSL krāsām. Tas nozīmē, ka atšķirīgā palete grafikā satur divus dažādus toņus.

Jūras ragā varat izveidot atšķirīgu paleti:

import seaborn as sb import matplotlib.pyplot as plt >>> sb.palplot(sb.diverging_palette(200, 100, n=11)) >>> plt.show()

Šeit 200 ir paletes vērtība kreisajā pusē un 100 ir paletes kods labajā pusē. Mainīgais n nosaka bloku skaitu. Mūsu gadījumā tas ir 11. Palete būs šāda:

Diskrēti dati

Seabornā ir iebūvēta funkcija ar nosaukumu mpl_palette, kas atgriež diskrētus krāsu modeļus. Mpl_palette metode attēlo vērtības krāsu paletē. Šī palete ir horizontāls masīvs.

Atšķirīgā palete izskatās šādi:

Šī izvade tiek sasniegta, izmantojot šādu koda rindu:

>>> sb.palplot(sb.mpl_palette('Set3', 11)) >>> plt.show()

Arguments Set3 ir paletes nosaukums un 11 ir diskrēto krāsu skaits paletē. Jūras raudzes metode attēlo vērtības noteiktas krāsu paletes horizontālā masīvā.

Pievienojiet tekstu virs siltuma kartes

Lai siltuma kartei pievienotu tekstu, mēs varam izmantot atribūtu annot. Ja anotācija ir iestatīta uz True, teksts tiks ierakstīts katrā šūnā. Ja katras šūnas etiķetes ir definētas, tās var piešķirt atribūtam annot.

Apsveriet šādu kodu:

>>> data = np.random.rand(4, 6) >>> heat_map = sb.heatmap(data, annot=True) >>> plt.show()

Rezultāts būs šāds:

Mēs varam pielāgot anotācijas vērtību, kā redzēsim vēlāk.

Pielāgojiet siltuma kartes fonta lielumu

Mēs varam pielāgot siltuma kartes teksta fonta lielumu, izmantojot jūras raga atribūtu font_scale šādi:

>>> sb.set(font_scale=2)

Tagad definējiet un parādiet siltuma karti:

>>> heat_map = sb.heatmap(data, annot=True) >>> plt.show()

Siltuma karte pēc izmēra palielināšanas izskatīsies šādi:

Seaborn siltuma kartes krāsu josla

Siltuma kartes krāsu josla izskatās šādi:

burvju galdi sql

Siltuma kartes atribūts cbar ir Būla atribūts, kas, ja tas ir iestatīts uz true, norāda, vai tam vajadzētu parādīties grafikā. Ja atribūts cbar nav definēts, pēc noklusējuma grafikā tiks parādīta krāsu josla. Lai noņemtu krāsu joslu, iestatiet cbar uz False:

>>> heat_map = sb.heatmap(data, annot=True, cbar=False) >>> plt.show()

Lai pievienotu krāsu joslas nosaukumu, mēs varam izmantot atribūtu cbar_kws.

Kods izskatīsies šādi:

>>> heat_map = sb.heatmap(data, annot=True, cbar_kws={'label': 'My Colorbar'}) >>> plt.show()

Cbar_kws ir jānorāda, uz kādu krāsu joslas atribūtu mēs atsaucamies. Mūsu piemērā mēs atsaucamies uz krāsu joslas etiķeti (nosaukumu).

Līdzīgi mēs varam mainīt krāsas orientāciju. Noklusējuma orientācija ir vertikāla, kā parādīts iepriekšējā piemērā.

Lai izveidotu horizontālu krāsu joslu, definējiet cbar_kws orientācijas atribūtu šādi:

>>> heat_map = sb.heatmap(data, annot=True, cbar_kws={'label': 'My Colorbar', 'orientation': 'horizontal'}) >>> plt.show()

Iegūtā krāsu josla būs šāda:

Mainiet siltuma kartes krāsu joslas fonta lielumu

Ja mums ir jāmaina visu jūras zīmes komponentu fonta lielums, varat izmantot Seaborn atribūtu font_scale.

Iestatīsim skalu uz 1,8 un salīdzināsim skalu 1 ar 1,8:

>>> sb.set(font_scale=1.8) >>> heat_map = sb.heatmap(data, annot=True, cbar_kws={'label': 'My Colorbar', 'orientation': 'horizontal'}) >>> plt.show()

Šis rezultāts 1. skalai:

Un skala 1,8 izskatīsies šādi:

Mainiet ērču ass rotāciju

Mēs varam mainīt ērču etiķešu rotāciju, izmantojot vajadzīgo ytick vai xtick etiķešu rotācijas atribūtu.

Pirmkārt, mēs definējam siltuma karti šādi:

>>> heat_map = sb.heatmap(data) >>> plt.show()

Šis ir parasts gabals ar nejaušiem datiem, kā definēts iepriekšējā sadaļā.

Ievērojiet oriģinālās atzīmes šajā attēlā:

Lai tos pagrieztu, vispirms mēs iegūsim siltuma kartes yticklabels un pēc tam iestatīsim rotāciju uz 0:

>>> heat_map.set_yticklabels(heat_map.get_yticklabels(), rotation=0)

Sadaļā set_yticklabels mēs izturējām divus argumentus. Pirmais iegūst siltuma kartes yticklabels, bet otrais nosaka rotāciju. Iepriekš minētās koda rindas rezultāts būs šāds:

Rotācijas atribūts var būt jebkurš leņķis:

>>> heat_map.set_yticklabels(heat_map.get_yticklabels(), rotation=35)

Pievienojiet tekstu un vērtības siltuma kartē

Iepriekšējā sadaļā mēs pievienojām tikai vērtības siltuma kartei. Šajā sadaļā mēs pievienosim vērtības kopā ar tekstu siltuma kartē.

Apsveriet šādu piemēru:

Izveidojiet izlases testa datus:

>>> data = np.random.rand(4, 6)

Tagad izveidojiet masīvu tekstam, ko mēs rakstīsim siltuma kartē:

>>> text = np.asarray([['a', 'b', 'c', 'd', 'e', 'f'], ['g', 'h', 'i', 'j', 'k', 'l'], ['m', 'n', 'o', 'p', 'q', 'r'], ['s', 't', 'u', 'v', 'w', 'x']])

Tagad mums ir jāapvieno teksts ar vērtībām un jāpievieno rezultāts siltuma kartei kā etiķete:

>>> labels = (np.asarray(['{0} {1:.2f}'.format(text,data) for text, data in zip(text.flatten(), data.flatten())])).reshape(4,6)

Labi, tāpēc šeit mēs nodevām datus teksta masīvā un datu masīvā un pēc tam saplacinājām abus masīvus vienkāršākā tekstā un salieciet tos kopā. Pēc tam iegūtais tiek pārveidots, lai izveidotu citu tāda paša izmēra masīvu, kurā tagad ir gan teksts, gan dati.

mainīgais tiks pievienots siltuma kartei, izmantojot anotāciju:

>>> heat_map = sb.heatmap(data, annot=labels, fmt='')

Atribūts fmt ir virkne, kas jāpievieno, pievienojot citu anotāciju, nevis patiesu un nepatiesu.

Uzzīmējot šo siltuma karti, rezultāts būs šāds:

Darbs ar jūras karšu siltuma kartēm ir ļoti vienkāršs. Es ceru, ka apmācība jums būs noderīga.

Ieteicamā lasāmviela

☞ Vai jūsu lietotne Django ir lēna? Domājiet kā datu zinātnieks, nevis inženieris

Project Python projekts: 3D šahs paplašinātajā realitātē

5 izplatītas Python kļūdas un to novēršana

Izveidojiet un izvietojiet Python tīmekļa lietotni | Kolba, Postgres un Heroku

☞ Čūsku spēle ar pitona lāstiem (jaunas funkcijas)

Django 2 Ajax CRUD ar Python 3.7 un jQuery

☞ Kā programmēt GUI lietojumprogrammu (ar Python Tkinter)

Paldies.

#Pitons