RTV Map Tool – Kartvisualisering med R Shiny

For en tid tilbake ble vi i TASK-gruppen ved IT-avdelingens Seksjon for datahåndtering kontaktet av C-REX – Senter for Ekstremismeforskning. Forespørselen gjaldt en nettløsning for visualisering av deres data. Det som gjorde at en enkel, standard kartløsning ikke ville fungere, var ønsket om kartvisualisering kombinert med interaktiv utvelgelse av data.

Skjermbilde av web-appen RTV Map Tool

Skjermbilde av web-appen RTV Map Tool

Dataene omtales som RTV-dasettet, hvor RTV står for Right-Wing Terrorism and Violence. Du kan lese mer om forskningen bak på C-REX sine nettsider. I denne artikkelen tar vi for oss den tekniske løsningen. Målgruppen er forskere med liknende behov.

Shiny?

I TASK-gruppa har vi god erfaring med R Shiny. Med dette verktøyet kan vi lage interaktive applikasjoner basert på R, og det på en relativt effektiv måte. R er hjemmebane for datahåndterere og andre som jobber med data i tabell-format. En viktig fordel er at beregninger, plotting og visualisering av datasettet kan løses med kjente og velprøvde R-verktøy. Shiny er dog begrenset når det gjelder nettside-elementene som tilbys. Ville Shiny strekke til denne gangen? Vi fant etShiny logo par nyttige eksempler på Internett: Superzip-example og denne blogg-artikkelen. Disse har Leaflet som basis for kartvisualiseringen. Her kan du lese om hvordan man bruker Leaflet med Shiny. Kildekoden til "Superzip-example" ble valgt som basis, og vi tok fatt på oppgaven.

Det var et lovende utgangspunkt, men så var det dette med djevelen og detaljene. Vi synes at vi kom i mål, og det uten å knote altfor mye, og resultatet ligger her: https://www.sv.c-rex.uio.no/RTVMapTool/

Det var viktig for utfallet at oppdragsgiveren hadde et godt strukturert datasett,  klare ønsker, og deltok underveis med tilbakemeldinger, ideer og justeringer.

Shiny!

Vi ser først på dataseleksjons-panelet til venstre. Man må velge mellom ett av to, tildels overlappende, datasett. Datasettene er basert på ulik metodikk, derfor tillates ikke å fremstille begge samtidig.

Siden det kan være tett mellom punkter i kartet, valgte vi clustring som default. R Leaflet sin clusterløsning kan konfigureres en del, blant annet kan man velge å fremstille overlappende punkter ved å såkalt 'spiderfy'-e dem. Utseende og størrelse på clustersymbolene krever litt mer front-end-ferdigheter å endre på, så der gikk vi for default-løsningen (Det hadde vært interessant å få tid til å flikke på dette). Siden clustring ikke alltid er ideelt, kan det skrus av.

Eksempel på bruk av spiderfy-teknikken
Eksempel på bruk av spiderfy-teknikken

Videre kan man velge ut data basert på ulike variable i datasettet. Flere av de nominelle variablene har mange kategorier. "Widgetene" som Shiny kommer med, løste ikke dette så godt. Derfor brukte vi denne fra pakken shinyWidgets. Oppførselen til widgeter, også til denne tredjepartsløsningen, kan justeres dynamisk, for eksempel kan man begrense regioner til valgte land.

Snapshot av widget for å selektere på land
Widget for å selektere på land

Det er også et panel for statistikk og to mindre paneler. Utseendet og oppførselen til panelene kan endres ved hjelp av CSS-parametre. Superzip-eksemplet kommer med en CSS-fil, som man kan ta utgangspunkt i. For eksempel har vi lagt på et rullefelt i panelet til venstre gjennom en CSS-parameter.

Appen gjør seg nok best på PC, men for å bedre opplevelsen på små skjermer, kan de større panelene skjules. Dette er ryddig og kjapt å implementere i Shiny med funksjonen conditionalPanel. Den samme funksjonen brukes for å skjule elementer i seleksjonspanelet når de blir irrelevante.

Panelet oppe til høyre inneholder en kort presentasjon av datasettet med lenker, en tekstlig oppsummering av det til enhver tid gjeldende datautvalget, samt diagrammer. Diagrammene fremstiller det gjeldende datautvalget, og kan lastes ned som en zip-fil. Zip-filen inneholder en tekstfil med parameterne for datautvalget  Uten den måtte brukeren notert seg parameterne på egen hånd.

Hvordan få appen ut på nettet?

Med Rstudio får man lett prøvd ut appen underveis i utviklingen. For å få appen tilgjengelig på Internett kreves en server. Vi valgte å sette opp en virtuell maskin med RHEL Linux til dette, siden IT-avdelingen har god støtte for det. Shiny Server og Nginx er server-programvaren. Installering av R-pakker på RHEL kan være litt spennende. Det gikk greit denne gangen, selv om vi knotet litt med Leaflet-installeringen.

Ta gjerne kontakt med oss for råd om serverløsning. Forskningsgrupper som ønsker å gjøre mest mulig selv, anbefales å sette opp en servermaskin på NREC.

Oppsummering

Vi konkluderer med at Shiny var rett verktøy med tanke på utviklingsinnsats og på hva vi endte opp med. Dersom du ønsker å bruke kildekoden for RTV Map Tool, så ta kontakt med oss på usit-ds@rt.uio.no

Published Mar. 22, 2023 1:43 PM - Last modified Oct. 30, 2024 12:38 PM