Verktøy for visualisering av data

Enten man driver med teoretiske beregninger eller analyserer data, før eller siden får man lyst til eller behov for å kommunisere hva det er man driver med. Jeg finner aldri én favoritt innen visualisering og i denne bloggposten skriver jeg litt om ting jeg i større eller mindre grad bruker. Først et par greier som fungerer bra hvis du foretrekker c eller C++:

Klassikeren gnuplot

Allerede i 1986 ble gnuplot lansert. Det er et kommandolinjebasert program for 2D- og 3D-plot. Det er skrevet i c. Programmet har gått litt i glemmeboka hos mange, for det har omsider kommet mange konkurrenter og gnuplot har sin egen, litt sære, måte gjøre alt på. Likevel er gnuplot fremdeles noe av det mest allsidige som finnes (se galleriet for v5.2 her), og særlig hvis du vil lage interaktive plot. I tillegg virker det som gnuplot har vært inspirasjonen til mange andre pakker der ute og koden er distribuert under en ganske åpen lisens som innebærer at du kan videreutvikle til ditt eget behov (hvis du liker å holde på med sånt). Det finnes også mange måter å bruke gnuplot fra andre programmeringsspråk.

Tungvekteren ROOT

ROOT er mye mer enn et plotteprogram. ROOT er skrevet i C++ og inneholder store mengder verktøy som er nyttige når du arbeider med analyse av data. Verktøyet er utviklet på CERN og er det eneste jeg vet om som tillater deg å bruke C++ interaktivt (litt som python). Jeg har et elsk-hat forhold til ROOT. På den ene siden er det mye rart med ROOT. Det er i stor grad fysikere som meg som har utviklet alle bibliotekene (og hvis det ikke sier deg noe skal du bare være glad til) og ROOT arvet mye sært fra et gamle PAW: Physics Analysis WorkStation som også ble utviklet på CERN. På den annen side er det lite ikke-kommersielt som kan måle seg med ROOT hvis du vil ha mulighet til å kunne interagere med dine data på en (litt) pedagogisk måte. Dessuten er det ganske greit å bruke ROOT som et C++ bibliotek og lage uavhengige programmer hvor ROOT brukes til å lage grafisk brukergrensesnitt for analyse og visualisering. Så selv om det er mye jeg hater med ROOT kommer jeg stadig vekk tilbake.

Ellers er jo Python et sabla greit språk og det finnes mye kjekt til Python:

Matplotlib

Matplotlib er kanskje det første du lærer hvis du jobber med data og Python. Det er relativt lett å komme i gang med og du kan lage ganske pene plott ganske lett. ROOT er nok mer laget for oss som er avhengige av å kunne produsere figurer som passer til trykk, for jeg syns det er litt mer jobb å sørge for høy nok oppløsning og lignende fra Matplotlib, men det meste man lager av figurer er jo til eget bruk. Til dette er Matplotlib helt greit. Det har likevel ikke blitt noen favoritt hos meg. ROOT er bedre på tools og andre biblioteker gir vakrere figurer.

Estetisk vakre Seaborn

En tørr analyse blir alltid litt hyggeligere hvis figurene jeg lager er behagelige for øyet. Skal jeg gjøre noe kjedelig tar jeg fram Seaborn. Estetikk er selvsagt litt subjektivt, men jeg syns Seaborn vinner. Dette biblioteket bygger på Matplotlib og har mye av de samme begrensningene. Det er derimot ganske enkelt å gjøre sånt som å kjøre en regresjon på data du plotter og se regresjonslinjen sammen med data. Dermed syns jeg Seaborn slår Matplotlib både på estetikk og hvor praktisk det er i bruk.

Praktiske Pandas

Pandas er det nærmeste jeg kommer ROOT i analyse-tools i Python verdenen. Plages du med tidsserier? Pandas er veldig godt tilpasset visualisering av tidsserier og analyse av disse. Det er lett å kombinere Pandas med Seaborn, for eksempel. Det finnes dessuten en del andre fysikere som er tilhengere av Pandas og derfor finnes det flere små verktøy for å ta ROOT greier som data lagret i ROOT-trær og bruke det i Pandas. Kjekt. Hvis du er fanget i en ROOT-verden, men helst vil bruke Python og ikke C++ er dette kanskje løsningen for deg.

Bokeh

Bokeh er et søtt bibliotek for visualisering som gjør det litt enklere å interagere med data. I motsetning til de andre bibliotekene jeg har nevnt virker bokeh særlig godt tilpasset til å lage ting du kan vise fram fra en server. Enkle, ikke veldig interaktive plot, kan du lagre som html og lett vise fram. Fancy figurer hvor brukeren kan selv få fram histogrammer av datautvalg krever at serveren kjører bokeh-server. Det går veldig greit å starte en slik server på egen maskin, så det er kanskje ikke så vanskelig å få satt opp en webserver til å kjøre tjenesten. Hvis jeg en dag har data jeg virkelig virkelig vil vise fra til mange på en sånn måte, så kan det tenkes at jeg plager en sys.ad. til  bokeh-server er oppe og kjører.

Julia

Jeg oppdaget nylig Julia. Julia er et programmeringsspråk (med tilhørende biblioteker). Det er åpen kildekode og det er utviklet for «high performance» og analyse av store datasett. Visualiseringene er bare nydelige. I tillegg har språket medfølgende biblioteker for maskinlæring, modellering, verktøy for vitenskapelig beregning og parallell prosessering. Jeg tror Julia har alt jeg trenger og ønsker meg. Så hvis du ikke har funnet din favoritt enda, kanskje du burde starte helt nederst og teste Julia?

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *