- Var du förvirrad över vilket visualiseringsverktyg du ska använda? I Broke Down the Pros and Cons of Each Libary for You
- Data
- Matplotlib
- Pros
- Konsekvenser
- Takeaway: Matplotlib kan plotta vad som helst men komplexa plottar kan ta mycket mer koder än andra bibliotek
- Pros
- Gör vanligt förekommande diagram snyggare
- Konsekvenser
- Plotly
- Pros
- Lätt att skapa interaktiva plottar
- Altair
- Pros
- Minus
- Bokeh
- Pros
- Konsekvenser
- Folium
- Pros
- Slutsats
Var du förvirrad över vilket visualiseringsverktyg du ska använda? I Broke Down the Pros and Cons of Each Libary for You
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
- 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
- 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
- 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
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
- 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
- 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:
.