Foto av oxana v on Unsplash

Den här guiden har uppdaterats med några mer djupgående exempel. Du hittar den senaste versionen av bloggen här.

Om du börjar med Python-visualisering kan du bli överväldigad av antalet bibliotek och exempel:

  • Matplotlib
  • Seaborn
  • Plotly
  • Bokeh
  • Altair
  • Folium

Om du har ett DataFrame som väntar på att visualiseras, vilket ska du välja? Vissa bibliotek kan vara bättre i specifika fall än de andra. Den här artikeln kommer att visa fördelarna och nackdelarna med vart och ett av dem. I slutet av artikeln bör du kunna skilja de olika funktionerna hos varje bibliotek och ha lättare att välja det optimala.

Vi kommer att göra detta genom att använda ett provdataset och utforska det med hjälp av varje bibliotek, med fokus på några specifika attribut:

Interaktivitet

Vill du att din visualisering ska vara interaktiv?

Vissa bibliotek, till exempel Matplotlib, återger visualiseringar som bilder och är därför bra för att förklara begrepp (i ett papper, ett bildspel eller en presentation).

Å andra sidan kan du med bibliotek som Altair, Bokeh och Plotly skapa interaktiva grafer som användarna kan dyka in i och utforska själva

Syntax och flexibilitet

Hur skiljer sig syntaxen för varje bibliotek? Med bibliotek på lägre nivå som Matplotlib kan du göra allt du kan tänka dig – men till priset av ett mer komplext API. Vissa bibliotek som Altair är mycket deklarativa, vilket gör det lättare att mappa dina data.

Typ av data och visualisering

Arbetar du med ett specialiserat användningsfall, t.ex. en geografisk plott, med stora data, eller använder du en plottyp som endast stöds av ett visst bibliotek?

Data

För att göra det lättare att jämföra kommer jag att använda riktiga data som jag skrapar från Github i den här artikeln:

Jag kommer att bädda in visualiseringarna från varje bibliotek med hjälp av Datapane, som är ett ramverk och API i Python för publicering och delning av Pythonrapporter. Om du vill se fler exempel från den verkliga världen kan du kolla in de rapporter som användare bidragit med i Datapane-galleriet.

För att följa artikeln laddar du antingen ner csv-filen härifrån eller hämtar den direkta datan från Datapane Blob.

import datapane as dpdp.Blob.get(name='github_data', owner='khuyentran1401').download_df()

Håll dig till att logga in på Datapane med din token i förväg om du vill använda Blob. Detta bör ta mindre än 1 minut

Matplotlib

Matplotlib är förmodligen det vanligaste Pythonbiblioteket för visualisering av data. Alla som är intresserade av datavetenskap har förmodligen använt Matplotlib minst en gång.

Pros

  1. Lätt att se egenskapen hos data

När man analyserar data kan det vara idealiskt att ha en snabb titt på fördelningen.

Om jag till exempel vill ha en snabb titt på fördelningen av de 100 bästa användarna med flest följare räcker det oftast att använda Matplotlib.

Även om x-axeln i Matplotlib inte ser bra ut har vi en bättre förståelse för fördelningen av data genom att titta på grafen.

2. Kan plotta vad som helst

Matplotlib är mycket mångsidig, vilket innebär att den kan plotta alla typer av grafer du kan tänka dig. Matplotlibs webbplats innehåller mycket omfattande dokumentation och olika grafer i galleriet, vilket gör det lätt att hitta handledningar för alla galna plottar du kan tänka dig.

Genom en text som denna:

Konsekvenser

Matplotlib kan plotta vad som helst, men det kan vara komplext att plotta icke-basala grafer eller justera graferna för att de ska se snygga ut.

Även om plotten är tillräckligt bra för att visualisera fördelningen, om du vill representera dina data för andra måste du fixa x-axeln, y-axeln, vilket kräver mycket arbete. Detta beror på att Matplotlib har ett gränssnitt på extremt låg nivå.

Takeaway: Matplotlib kan plotta vad som helst men komplexa plottar kan ta mycket mer koder än andra bibliotek

Seaborn är ett Python-bibliotek för datavisualisering baserat på Matplotlib. Det tillhandahåller ett omslag på högre nivå för biblioteket vilket gör det lättare att använda.

Pros

  1. Mindre kod

Det tillhandahåller ett gränssnitt på högre nivå för liknande plottar. Med andra ord ger seaborn generellt sett liknande diagram som matplotlib, men med mindre kod och snyggare design.

Vi använder samma data som tidigare för att rita en liknande värmekarta av grafen.

Vi får en bättre värmekarta utan att ställa in x- och y-label!

Gör vanligt förekommande diagram snyggare

Många väljer seaborn när det gäller populära diagram som stapeldiagram, boxdiagram, räknediagram, histogram etc., inte bara för att de kan skapas med mindre kod utan också för att de ser mycket snyggare ut. Som vi kan se i vårt exempel ovan ser färgerna också bättre ut än standardfärgerna i Matplotlib.

Konsekvenser

Seaborn är mer begränsat och har inte en lika bred samling som matplotlib

Takeaway: Seaborn är en version på högre nivå av Matplotlib. Även om den inte har en lika bred samling som Matplotlib gör seaborn populära diagram som bar plot, box plot, heatmap etc. snygga på mindre kod.

Plotly

Plotlys diagrambibliotek i Python gör det enkelt att skapa interaktiva grafer av publikationskvalitet. Det kan också skapa liknande diagram som Matplotlib och seaborn, t.ex. linjediagram, spridningsdiagram, områdesdiagram, stapeldiagram etc.

Pros

  1. Like R

Om du gillar diagram i R och saknar dess funktioner när du byter till Python, ger Plotly dig samma kvalitet på diagrammen med hjälp av Python!

Min favorit är Plotly Express eftersom det gör det riktigt enkelt och det går till och med snabbare att skapa bra plottar från en enda rad i Python.

Lätt att skapa interaktiva plottar

Plotly gör det också enkelt att skapa interaktiva plottar. Interaktiva plottar är inte bara vackra utan gör det också lättare för betraktaren att titta närmare på varje datapunkt.

Håller du minnet av stapeldiagrammet vi hade tidigare med matplotlib? Låt oss se hur det blir med Plotly

Med ungefär samma rader kod producerar vi en interaktiv plott som vi kan föra musen över varje stapel för att se vilken användare och hur många följare stapeln representerar. Detta innebär att konsumenten av din visualisering kan utforska den själv.

3. Komplexa plottar enkelt gjorda

Med Plotly kan vissa plottar som vanligtvis är utmanande att skapa enkelt skapas.

Om vi till exempel vill skapa en karta för att visualisera var Github-användare befinner sig, kan vi hitta deras latituder och longitud på det sätt som visas här, och sedan använda dessa data för att upptäcka användarnas platser på kartan så här

Med några få rader av kod representeras alla användares platser vackert på en karta. Färgen på bubblorna representerar antalet gafflar och storleken representerar det totala antalet stjärnor

Takeaway: Plotly är utmärkt för att skapa interaktiva grafer av publikationskvalitet med några få rader kod.

Altair

Altair är ett deklarativt statistiskt visualiseringsbibliotek för Python baserat på Vega-lite, vilket gör det idealiskt för grafer som kräver en hel del statistisk omvandling.

Pros

1. Enkel visualiseringsgrammatik

Den grammatik som används för att skapa visualiseringen är lätt att förstå. Man behöver bara nämna kopplingarna mellan datakolumnerna till kodningskanalerna och resten av plottningen sköts automatiskt. Detta låter abstrakt men är en stor sak när man arbetar med data, och det gör visualiseringen av information riktigt snabb och intuitiv.

Till exempel, med titandata ovan vill vi räkna antalet personer i varje klass, allt vi behöver är att använda count() i y_axeln

2. Enkelt att transformera data

Altair gör det också väldigt enkelt att transformera data medan man skapar diagrammet

Om vi till exempel vill hitta medelåldern för varje kön i Titanic, kan vi i stället för att göra transformationen i förväg som Plotly, utföra transformationen i koden för att skapa diagrammet.

Vi skulle också kunna se till att klassen är ett nominellt data (kategoriska data utan någon ordning). med hjälp av :N eller se till att mean_age är en kvantitativ data (mått på värden, t.ex. tal) med hjälp av :Q

Se en fullständig lista över datatransformationer här

3. Lätt att koppla samman diagram

Altair låter dig också göra imponerande kopplingar mellan diagram, t.ex. genom att använda ett intervallval för att filtrera innehållet i ett bifogat histogram.

Om vi till exempel vill visualisera antalet personer i varje klass inom det intervall som vi väljer i ett punktdiagram mellan ålder och biljettpris kan vi göra något liknande.

När vi drar musen för att välja intervallet i spridningsdiagrammet kan vi se förändringen i stapeldiagrammet nedan. I kombination med omvandlingarna och beräkningarna från tidigare innebär detta att du kan skapa extremt interaktiva diagram som gör beräkningar i farten – utan att ens behöva en fungerande Python-server!

Minus

Om du inte anger en anpassad styling ser de enkla diagrammen, som till exempel stapeldiagrammet, inte lika stylade ut som seaborn eller Plotly. Altair rekommenderar inte heller datamängder med mer än 5000 prover och rekommenderar istället att du aggregerar dina data före visualisering.

Takeaway: Altair är perfekt för sofistikerade diagram för att visa statistik. Altair kan inte hantera data över 5000 samplingar och vissa enkla diagram ser inte lika stylade ut jämfört med Plotly eller Seaborn.

Bokeh

Bokeh är ett flexibelt interaktivt visualiseringsbibliotek som riktar sig till webbläsare för representation.

Pros

  1. Interaktiv version av Matplotlib

Om vi ska rangordna bland de interaktiva visualiseringsbiblioteken ovan kommer Bokeh förmodligen att rankas först när det gäller likheten med Matplotlib.

Matplotlib kan skapa vilken plot som helst eftersom det är ett visualiseringsbibliotek på låg nivå. Bokeh kan både användas som ett gränssnitt på hög eller låg nivå; det kan alltså skapa många sofistikerade plotts som Matplotlib skapar, men med färre rader kod och högre upplösning.

Till exempel, cirkeldiagrammet från Matplotlib

Kan också skapas. med bättre upplösning och större nytta med hjälp av Bokeh

2. Länka mellan tomter

Bokeh gör det också mycket enkelt att länka mellan tomter. Den ändring som tillämpas på en plot kommer att tillämpas på en annan plot med en liknande variabel.

Till exempel om vi skapar 3 grafer sida vid sida och vill observera deras förhållande, kan vi använda länkad borstning

ColumnDataSource gör det möjligt att dela data mellan diagrammen. När vi tillämpar ändringen på en plott ändras alltså även de andra plottarna i enlighet med detta.

Konsekvenser

Eftersom Bokeh är ett bibliotek som till viss del har ett gränssnitt på mellannivå krävs det ofta mindre kod än Matplotlib, men det krävs mer kod för att producera samma plott som Seaborn, Altair eller Plotly.

För att till exempel skapa samma räkneplott med hjälp av titaniska data, förutom behovet av att transformera data i förväg, måste vi också ställa in stapelbredden och färgen om vi vill att grafen ska se snygg ut

Om vi inte lägger till bredd för stapeldiagrammet skulle grafen se ut så här

Så här, måste vi manuellt justera dimensionerna för att göra plotten snyggare

Om du vill skapa en snygg stapeldiagram med mindre kod kan detta vara nackdelen med Bokeh jämfört med andra bibliotek

Takeaway: Bokeh är det enda biblioteket vars gränssnitt sträcker sig från lågt till högt, vilket gör det lätt att skapa både mångsidig och elegant grafik. Detta kommer dock till priset av att det i allmänhet krävs mer kod för att Bokeh ska kunna skapa grafer med liknande kvalitet som andra bibliotek.

Folium

Folium gör det enkelt att visualisera data på en interaktiv bladkarta. Biblioteket har ett antal inbyggda tilesets från OpenStreetMap, Mapbox och Stamen

Pros

  1. Lätt att skapa en karta med markörer

Även om Plotly, Altair, och Bokeh också gör det möjligt för oss att skapa kartor, använder Folium en öppen gatukarta för att ge dig en närmare känsla av en Google Map med minimal kod

Håller du ihåg hur vi skapade kartan för att visualisera Github-användarnas platser med hjälp av Plotly? Vi skulle kunna få kartan att se ännu snyggare ut med Folium

Den ursprungliga platsen i Brooklyn, NY. Zooma ut för att se andra platser på kartan. Med några rader kod har vi skapat en riktig karta som visar var användarna befinner sig.

2. Lägg till potentiell plats

Om vi vill lägga till andra användares potentiella platser gör Folium det enkelt genom att låta användarna lägga till markörer

Klicka på kartan för att se en ny plats genereras precis där du klickar.

3. Plugins

Folium har ett antal plugins som du kan använda med din karta – inklusive ett plugin till Altair. Vad händer om vi vill se en värmekarta över de totala stjärnorna för Github-användare i världen för att identifiera var det finns ett stort antal toppanvändare på Github med ett stort antal av de totala stjärnorna? Med värmekartan i Folium-plugins kan du göra just det.

Zoom ut för att se hela bilden av värmekartan.

Takeaway: Med Folium kan du skapa en interaktiv karta med några få rader kod. Det ger dig en upplevelse som ligger nära Google Map.

Slutsats

Gratulation! Du har just lärt dig om sex olika visualiseringsverktyg för din visualisering. Jag hoppas att den här artikeln har gett dig en känsla för vad varje bibliotek gör och när du ska använda vad. Om du förstår de viktigaste funktionerna hos varje bibliotek kommer det att gå snabbare för dig att ta fram rätt bibliotek när du behöver det.

Om du fortfarande är förvirrad över vilket bibliotek du ska använda för dina data, välj bara ett som du tycker är tillräckligt bra. Om koden är för lång eller om grafen inte blir så bra som du tänkt dig är det bara att prova med ett annat bibliotek!

Känn dig fri att gaffla och leka med koden för den här artikeln i den här Github-repo:n.

Jag gillar att skriva om grundläggande datavetenskapskoncept och leka med olika algoritmer och datavetenskapliga verktyg. Du kan komma i kontakt med mig på LinkedIn och Twitter.

Stjärn denna repo om du vill titta på koderna för alla artiklar jag har skrivit. Följ mig på Medium för att hålla dig informerad om mina senaste datavetenskapliga artiklar som dessa:

.

admin

Lämna ett svar

Din e-postadress kommer inte publiceras.

lg