Înapoi la catalog
Season 36 5 Episoade 19 min 2026

Matplotlib

v3.10 — Ediția 2026. Un curs audio complet despre Matplotlib, cea mai populară bibliotecă de vizualizare din Python. Învață identitatea de bază, ciclul de viață al unui grafic, layout-uri avansate, tipuri de grafice și fluxuri de lucru pentru utilizatori avansați pentru versiunea 3.10.

Vizualizarea datelor Știința datelor
Matplotlib
Se redă acum
Click play to start
0:00
0:00
1
Identitatea de bază: Figures, Axes și interfețe
Bun venit la Matplotlib. În acest episod, definim modelul mental aflat la baza celei mai populare biblioteci de vizualizare din Python. Învață diferența dintre un Figure și un Axes și de ce interfața explicită Object-Oriented este cel mai bun instrument al tău.
3m 29s
2
Ciclul de viață al unui grafic
Descoperă cum să transformi un grafic de la date brute la o afișare etichetată și formatată. Parcurgem ciclul de viață al unui grafic simplu, arătându-ți exact cum să adaugi etichete, titluri și tick formatters personalizate folosind interfața explicită.
3m 26s
3
Stăpânirea layout-urilor: Subplots și mozaicuri
Învață cum să gestionezi mai multe grafice pe un singur canvas fără ca acestea să se suprapună. Acest episod acoperă plt.subplots, puterea subplot_mosaic pentru layout-uri semantice și utilizarea constrained layout pentru a păstra lucrurile ordonate.
4m 12s
4
Dincolo de linie: Explorarea tipurilor de bază de grafice
Treci dincolo de liniile de bază și scatter plots. Cartografiem categoriile de grafice din Matplotlib, contrastând graficele de distribuție statistică cu funcțiile pentru date sub formă de grilă precum imshow și pcolormesh.
3m 59s
5
Fluxuri de lucru pentru utilizatori avansați: Stiluri și rcParams
Transformă instantaneu aspectul graficelor tale. În episodul nostru final, explorăm cum să folosești style sheets predefinite și să personalizezi dinamic setările globale folosind rcParams.
3m 59s

Episoade

1

Identitatea de bază: Figures, Axes și interfețe

3m 29s

Bun venit la Matplotlib. În acest episod, definim modelul mental aflat la baza celei mai populare biblioteci de vizualizare din Python. Învață diferența dintre un Figure și un Axes și de ce interfața explicită Object-Oriented este cel mai bun instrument al tău.

Descarcă
Salut, sunt Alex de la DEV STORIES DOT EU. Matplotlib, episodul 1 din 5. Copiezi o soluție de plotting de pe Stack Overflow, îi dai paste în codul tău și, dintr-o dată, noul tău chart îl suprascrie pe cel vechi. Codul arată corect, dar se comportă ca un monstru Frankenstein. Asta se întâmplă pentru că majoritatea exemplelor online combină două moduri complet diferite de a folosi librăria, fără să explice de ce. Ca să repari asta, trebuie să înțelegi identitatea de bază: Figure, Axes și interfețe. Matplotlib este fundamentul pentru vizualizarea datelor în Python. Pandas, Seaborn și multe alte librării rulează peste el. Dar developerii se împiedică adesea de arhitectura lui. Ca să scrii cod de vizualizare curat, trebuie să separi containerul de conținut. În Matplotlib, asta înseamnă să înțelegi diferența dintre un Figure și un Axes. Figure-ul este canvas-ul tău. Este containerul top-level care ține întreaga fereastră, background-ul și toate elementele din interiorul lui. Dar un Figure nu desenează date. Pentru asta, ai nevoie de un Axes. Axes-ul este plot-ul propriu-zis. Este regiunea în care trăiesc liniile, barele și punctele de scatter. Un Figure poate ține mai multe Axes, ca un grid de patru subplots. Ține minte, Axes nu este pluralul cuvântului Axis. Un obiect Axes conține două sau trei obiecte Axis individuale, care gestionează liniile numerice și ticks-urile specifice. Tu atașezi date la Axes, iar Axes-ul este atașat la Figure. Odată ce știi ce sunt aceste obiecte, trebuie să decizi cum să interacționezi cu ele. Aici începe confuzia. Matplotlib îți oferă două moduri distincte de a construi un chart: interfața implicită și interfața explicită. Interfața implicită se bazează pe un modul numit pyplot. Acesta urmărește state-ul programului tău în culise. Când apelezi direct o funcție de plotting, Matplotlib presupune că vrei să desenezi pe Figure-ul și Axes-ul active în acel moment. Dacă nu există niciunul, le creează pentru tine. Asta e foarte convenabil pentru un script rapid, de tip throwaway, unde trebuie doar să inspectezi rapid niște date. Dar pentru că se bazează pe un global state ascuns, devine imprevizibil în aplicațiile mai mari. Interfața explicită, adesea numită interfața object-oriented, elimină ghicitul. Îți instanțiezi obiectele de la bun început. Mai întâi creezi Figure-ul și Axes-ul împreună, apoi apelezi metode direct pe acele obiecte specifice. Nu te bazezi niciodată pe librărie să ghicească ce plot targetezi. Dacă construiești un dashboard reutilizabil, folosește mereu interfața explicită. Poți scrie funcții helper care iau un obiect Axes ca argument, fac plot la date pe el și îl returnează. Funcției nu îi pasă de global state-ul aplicației. Doar modifică obiectul pe care l-a primit. Asta îți face codul modular și testabil. Iată ideea cheie. Poți folosi oricare dintre metode, dar nu ar trebui să le combini niciodată. Folosește interfața implicită pyplot pentru explorare rapidă într-un notebook și folosește interfața explicită object-oriented pentru codul de producție. Dacă îți place emisiunea și vrei să ne susții, ne poți găsi căutând DevStoriesEU pe Patreon. Asta e tot pentru acest episod. Mersi că ne-ai ascultat și continuă să construiești!
2

Ciclul de viață al unui grafic

3m 26s

Descoperă cum să transformi un grafic de la date brute la o afișare etichetată și formatată. Parcurgem ciclul de viață al unui grafic simplu, arătându-ți exact cum să adaugi etichete, titluri și tick formatters personalizate folosind interfața explicită.

Descarcă
Salut, sunt Alex de la DEV STORIES DOT EU. Matplotlib, episodul 2 din 5. Formatarea numerelor pe o axă poate părea un meci de wrestling. Vrei un 100K curat cu semnul de dolar, dar primești notație științifică sau numere întregi brute care aglomerează ecranul. Soluția este remarcabil de simplă odată ce înveți cum să predai controlul axei tale direct unei funcții Python standard. Astăzi, ne uităm la ciclul de viață al unui plot folosind interfața explicită axes. Interfața explicită tratează crearea de grafice ca pe un proces previzibil, pas cu pas. Apelezi mereu metode pe un anumit obiect. Ciclul de viață începe prin crearea unui obiect figure și a unui obiect axes. Figure este pânza goală. Obiectul axes reprezintă zona propriu-zisă în care vor trăi datele tale. Odată ce ai acel obiect axes, fiecare personalizare este doar un alt method call aplicat acestuia. Ia în considerare un scenariu în care ai o listă de nume de companii și o listă cu veniturile lor. Pentru a afișa aceste date pe ecran, apelezi o metodă de plot pe axes. Pentru un horizontal bar chart, apelezi bar h și pasezi numele și veniturile. În acest moment, ai un plot funcțional, dar îi lipsește contextul. Următoarea fază a ciclului de viață este adăugarea acelui context. O abordare comună este să setezi individual title, x label și y label. Totuși, obiectul axes are o metodă set unificată. Poți apela set și să pasezi keyword arguments pentru title, x label și y label, toate deodată. Această singură linie de cod gestionează textul structural al chart-ului tău. Dacă ai vreodată nevoie să inspectezi ce este aplicat în prezent, poți folosi metodele get corespunzătoare, cum ar fi get x tick labels, pentru a recupera starea curentă înainte să o modifici. Asta ne aduce la cea mai critică parte din fine-tuning: formatarea numerelor de pe axă. Când dai plot la venituri, numerele mari creează axes dezordonate. Matplotlib ar putea afișa o sută de mii cu toate zerourile. Tu vrei să afișeze 100K cu un semn de dolar. Iată ideea cheie. Nu trebuie să sapi prin setări obscure din Matplotlib ca să repari asta. Trebuie doar să scrii o funcție Python simplă. Definești o funcție care primește două argumente: valoarea de tick și poziția sa. În interiorul acestei funcții, scrii logică standard Python. Verifici dacă valoarea este de ordinul miilor, o împarți la o mie și returnezi un string formatat cu semnul de dolar și un K mare. Ca să aplici asta, îi spui obiectului axes să folosească funcția ta pentru tick marks. Accesezi proprietatea x-axis de pe obiectul tău axes, apoi apelezi o metodă numită set major formatter. Pasezi funcția ta custom direct în această metodă. Matplotlib preia controlul de acolo. Pe măsură ce desenează plot-ul, pasează fiecare valoare de tick de pe x-axis prin funcția ta Python și afișează string-ul curat pe care l-ai returnat. Interfața explicită elimină ghicitul din personalizarea chart-urilor, descompunând totul într-o secvență fiabilă: creezi obiectul axes, mapezi datele brute, aplici label-urile printr-o singură metodă set și interceptezi formatarea de tick în întregime cu propria ta logică. Asta e tot pentru acest episod. Mulțumesc pentru audiție și continuă să construiești!
3

Stăpânirea layout-urilor: Subplots și mozaicuri

4m 12s

Învață cum să gestionezi mai multe grafice pe un singur canvas fără ca acestea să se suprapună. Acest episod acoperă plt.subplots, puterea subplot_mosaic pentru layout-uri semantice și utilizarea constrained layout pentru a păstra lucrurile ordonate.

Descarcă
Salut, sunt Alex de la DEV STORIES DOT EU. Matplotlib, episodul 3 din 5. Trebuie să construiești un dashboard cu un chart lat în header și două chart-uri mai mici dedesubt. În trecut, asta însemna să calculezi fracții de grid și să plasezi manual axele. Acum, poți construi exact acel layout tastând un string de tip ASCII art. Acesta este Mastering Layouts: Subplots and Mosaics. Majoritatea vizualizărilor de date încep cu un grid de bază. Când ai nevoie de un layout doi pe doi, apelezi funcția standard subplots, specifici numărul de rânduri și coloane, iar Matplotlib îți returnează un obiect figure și un array multidimensional care conține axele tale individuale. Folosești indexarea standard de array pentru a selecta o axă specifică și a-ți desena datele. Asta funcționează perfect până când adaugi text. By default, Matplotlib poziționează axele pe baza unor proporții fixe din dimensiunea figurii. Nu ia în calcul spațiul fizic ocupat de titluri, axis labels sau tick marks. Ca rezultat, label-urile axei X de pe rândul de sus se vor suprapune adesea cu titlurile de pe rândul de jos. În loc să scrii ajustări custom de spațiere, ar trebui să gestionezi asta în etapa de creare a figurii. Pasează argumentul layout setat la cuvântul constrained. Constrained layout este un motor de optimizare. Chiar înainte ca figura să fie desenată, măsoară bounding boxes pentru toate elementele tale de text și împinge axele suficient de mult pentru a preveni coliziunile. Funcțiile standard subplots și constrained layouts acoperă grid-uri simetrice. Dar dashboard-urile sunt rareori simetrice. Adesea ai nevoie de chart-uri care se întind pe mai multe rânduri sau coloane. Asta ne aduce înapoi la chart-ul lat din header care se întinde pe rândul de sus, cu două chart-uri mai mici alăturate dedesubt. În loc să lucrezi cu obiecte de specificație de grid low-level, poți folosi o metodă semantică numită subplot mosaic. Apelezi subplot mosaic direct pe obiectul tău figure. Acceptă o reprezentare vizuală a layout-ului tău, scrisă în întregime în string-uri. Fiecare caracter unic pe care îl tastezi reprezintă un chart discret. Dacă un caracter este repetat pe rânduri sau coloane, acel chart se întinde pentru a umple acele spații. Pentru a construi layout-ul nostru de dashboard, poți pasa un singur string în care rândurile sunt separate prin punct și virgulă. Pentru rândul de sus, tastezi litera majusculă A de două ori. Apoi un punct și virgulă. Pentru rândul de jos, tastezi litera majusculă B, apoi litera majusculă C. Întregul string este pur și simplu A A punct și virgulă B C. Matplotlib parsează acest string și vede că A ocupă două coloane în primul rând, așa că creează o axă lată care se întinde în partea de sus. Vede că B și C ocupă câte o coloană fiecare în al doilea rând, așa că creează două axe mai mici dedesubt. Iată ideea cheie. Pentru că array-urile standard își pierd sensul în layout-uri complexe, subplot mosaic nu returnează un array. Returnează un dicționar Python standard. Cheile acestui dicționar sunt exact caracterele din string pe care le-ai mapat în design-ul tău. Dacă vrei să desenezi un line chart pe header-ul tău lat, pur și simplu accesezi dicționarul folosind cheia A. Dacă vrei să pui un scatter plot în dreapta jos, accesezi dicționarul folosind cheia C. Codul tău de plotare devine complet decuplat de coordonatele grid-ului. De asemenea, poți folosi acest sistem pentru a crea white space intenționat. Dacă vrei un spațiu gol în grid-ul tău, pui un caracter punct în string-ul de layout. Matplotlib citește punctul și lasă acea celulă specifică a grid-ului complet goală. Matematica complexă a grid-urilor este de domeniul trecutului. Designul modern de layout-uri înseamnă doar să tastezi forma vizuală pe care o vrei și să lași dicționarul să-ți mapeze datele exact în spațiul corect de pe ecran. Asta e tot pentru acest episod. Mulțumesc pentru audiție și continuă să construiești!
4

Dincolo de linie: Explorarea tipurilor de bază de grafice

3m 59s

Treci dincolo de liniile de bază și scatter plots. Cartografiem categoriile de grafice din Matplotlib, contrastând graficele de distribuție statistică cu funcțiile pentru date sub formă de grilă precum imshow și pcolormesh.

Descarcă
Salut, sunt Alex de la DEV STORIES DOT EU. Matplotlib, episodul 4 din 5. Ai zece mii de data points, le arunci pe un scatter plot și te alegi cu o pată de cerneală gigantică, ilizibilă, unde punctele suprapuse ascund pattern-ul real. Ai ales un tool pairwise pentru o problemă de densitate. Ca să treci de line chart-ul default, trebuie să știi cum să potrivești forma datelor tale cu tool-ul vizual potrivit, exact ceea ce acoperim în Dincolo de linie: Explorarea tipurilor de bază de plot-uri. Matplotlib își organizează plot-urile de bază în categorii largi, în funcție de structura datelor tale. Cele trei categorii fundamentale sunt datele pairwise, distribuțiile statistice și datele pe grid. Cea mai simplă formă este cea pairwise. Ai un array de valori X și un array corespunzător de valori Y. Folosești funcția plot atunci când aceste puncte au o secvență logică, cum ar fi un time series, unde trasarea unei linii continue între ele arată un trend. Dacă punctele sunt observații independente, folosești funcția scatter pentru a plasa markeri individuali. Dar scatter plot-urile nu mai fac față atunci când ai o densitate mare. Asta ne aduce la a doua categorie, care se ocupă de distribuțiile statistice. Iată ideea cheie. Când ai zece mii de puncte suprapuse, nu te interesează de fapt coordonata exactă a punctului numărul patru mii. Te interesează unde se grupează punctele. Aici intervine o funcție precum hexbin. Aceasta preia aceleași array-uri X și Y ca un scatter plot, dar grupează zona geometrică în bin-uri hexagonale, colorându-le în funcție de densitatea punctelor pentru a dezvălui pattern-ul ascuns. Acum, gândește-te la un singur array care conține vârstele brute ale tuturor clienților tăi. Dacă le dai plot unul câte unul ca puncte, obții doar un zgomot inutil. În schimb, trimiți acel singur flat list în funcția hist. O histogramă grupează automat vârstele individuale în intervale și îți arată volumul de clienți de douăzeci de ani comparativ cu cei de cincizeci de ani. Dacă trebuie să compari aceste distribuții de vârstă din cinci locații diferite de magazine, una lângă alta, treci la un boxplot. Boxplot-ul rezumă clar intervalele, medianele și outliers. Dacă ai nevoie de mai multe detalii decât oferă un boxplot, un violinplot desenează forma curbată completă a profilului de densitate pentru fiecare magazin. A treia categorie majoră sunt datele pe grid. Asta se aplică atunci când datele tale sunt o matrice bidimensională și trebuie să vizualizezi o valoare continuă pe o zonă. Gândește-te la o hartă bidimensională a temperaturii pe un grid geografic. Fiecare poziție are o coordonată X, o coordonată Y și o valoare a temperaturii. Nu vrei ca linii sau scattered points să reprezinte asta. Vrei o suprafață solidă, colorată. Matplotlib oferă imshow și pcolormesh în acest scop. Folosești imshow atunci când datele tale stau pe un grid perfect regulat, cum ar fi pixelii dintr-o fotografie digitală. Presupune o distanță egală între fiecare data point și randează foarte rapid. Dacă coordonatele grid-ului tău sunt neregulate, poate limitele de măsurare se deformează sau se comprimă în apropierea anumitor caracteristici geografice, folosești pcolormesh. Calculează și desenează patrulatere individuale pentru fiecare celulă, conformându-se exact formei distorsionate a array-urilor tale de coordonate. Atunci când decizi ce funcție Matplotlib să apelezi, ignoră cum vrei să arate imaginea finală și analizează strict forma matematică a array-urilor tale de input: sunt perechi secvențiale, flat lists sau matrici bidimensionale. Asta e tot pentru acest episod. Mulțumesc că m-ai ascultat și continuă să construiești!
5

Fluxuri de lucru pentru utilizatori avansați: Stiluri și rcParams

3m 59s

Transformă instantaneu aspectul graficelor tale. În episodul nostru final, explorăm cum să folosești style sheets predefinite și să personalizezi dinamic setările globale folosind rcParams.

Descarcă
Salut, sunt Alex de la DEV STORIES DOT EU. Matplotlib, episodul 5 din 5. Deseori vezi oameni scriind douăzeci de linii de cod repetitiv, modificând tick labels, liniile de grid și fonturile pentru fiecare plot pe care îl fac. O singură comandă poate aplica toate aceste modificări instantaneu în tot proiectul. Acest episod acoperă workflows de power-user: Styles și rcParams. Look-ul standard Matplotlib este foarte ușor de recunoscut, dar actualizarea manuală a elementelor individuale per plot pentru a se potrivi cu o anumită estetică este ineficientă. În schimb, folosești style sheets. Matplotlib vine cu mai multe stiluri built-in. Apelezi o funcție numită style punct use din modulul pyplot și îi pasezi un string, cum ar fi ggplot sau classic. Dacă pregătești o vizualizare pentru un slide de prezentare cu temă dark, nu trebuie să schimbi manual background-ul în negru, axele în alb și textul în gri deschis. Rulezi style punct use cu dark underscore background la începutul scriptului tău. Orice figură generată după acea linie moștenește instantaneu acel look specific. Poți chiar să combini mai multe style sheets. Dacă pasezi o listă de nume de stiluri, Matplotlib le aplică în ordine, de la stânga la dreapta. Stilurile listate în dreapta vor suprascrie setările suprapuse ale stilurilor din stânga. Iată ideea cheie. Apelarea style punct use modifică starea globală pentru restul sesiunii tale Python. Dacă vrei un anumit stil doar pentru un anumit chart, folosești un context manager numit style punct context. Deschizi contextul, specifici numele stilului și îți scrii codul de plotting în interiorul acelui bloc. Odată ce blocul se termină, ploturile tale revin la orice stil global era activ înainte. În spatele acestor style sheets se află un dicționar masiv de configurare numit rcParams. r și c vin de la runtime configuration. Orice proprietate default pe care Matplotlib o folosește pentru a randa o figură trăiește în acest dicționar. Font sizes, line widths, dimensiunile default ale figurii și marker styles sunt toate mapate la chei specifice de tip string. Când aplici un style sheet, practic faci un bulk-update pe dicționarul rcParams în background. Dar poți interacționa direct cu el pentru a face ajustări granulare și dinamice. Să zicem că ai aplicat un stil care îți place, dar line width-ul default este prea subțire pentru nevoile tale. Accesezi dicționarul rcParams, specifici cheia pentru lines punct linewidth și îi atribui o nouă valoare numerică. Din acel moment, orice linie desenată în sesiunea ta va avea ca default acea grosime mai mare. Matplotlib oferă, de asemenea, o convenience function numită rc pentru a gestiona asta. În loc să modifici dicționarul key by key, apelezi rc, pasezi un nume de grup top-level, cum ar fi font, și apoi oferi keyword arguments pentru proprietățile specifice, cum ar fi weight sau size. Este o modalitate mult mai curată de a actualiza mai multe setări corelate simultan. De asemenea, poți să-ți definești propriile custom styles. Un style sheet este pur și simplu un fișier text cu extensia punct mplstyle. Înăuntru, conține o listă simplă de perechi key-value rcParams. Salvezi acest fișier, îi pasezi calea către style punct use, iar custom corporate branding-ul tău este aplicat instantaneu pe orice plot, fără a-ți polua codul efectiv de date. Adevărata putere a customizării Matplotlib constă în decuplarea data logic-ului de alegerile estetice. Setarea regulilor la nivel global îți menține funcțiile de plotting lean și asigură consistența vizuală în întregul tău codebase. Te încurajez să explorezi documentația oficială pentru a vedea lista completă de configurări de runtime disponibile și să încerci să construiești singur un custom style sheet, sau să vizitezi devstories dot eu pentru a sugera subiecte pentru seriile viitoare. Îți mulțumesc că ai petrecut câteva minute cu mine. Până data viitoare, numai bine.