Kortlægning i R (leaflet.minicharts)

I denne artikel vil jeg oprette kortbaserede diagrammer i R, ved at bruge folderen .minicharts-pakken i R. Jeg har allerede introduceret folder til oprettelse af markører på kort og til visualisering af rumlige fordelinger med tæthedsvarmekort. I dette blogindlæg laver jeg barcharts, piecharts og polarområdediagrammer ved hjælp af folderen .minicharts i R.

Oprettelse af et basiskort med folder i R

Først laver jeg et basiskort til min visualisering. Jeg kan gøre det ved at bruge folderen i R. I kodelinjerne nedenfor opretter jeg basiskortet.

library(knitr)
library(leaflet)

basemap = leaflet() %>% 
  addTiles() %>% 
  addProviderTiles(providers$OpenStreetMap.DE) %>%
  setView(-98,38.5,zoom=4)

basemap
Grundkort til kortlægning af geodata

I dette tilfælde vil jeg se data for USA. Af denne grund indstillede jeg kortvisningen til at vise de fleste af de amerikanske stater. Hawaii er ikke vist.

Import af salgsdata til folder.minicharts

Dernæst importerer jeg salgsdata for hver relevant delstat i USA. Dataene er allerede udarbejdet og opsummeret i Excel. Det er grunden til, at dataene er tilgængelige i en csv-fil, som jeg importerer til hukommelsen.

data = read.csv("sales.csv",header=TRUE)
head(data)
##           state  longitude latitude sales_sensors sales_pumps sales_displays
## 1     Wisconsin  -89.50000 44.50000         13000   12002.374      5664.6262
## 2 West Virginia  -80.50000 39.00000          5000    2739.885      3774.7759
## 3       Vermont  -72.70000 44.00000          3400    1041.972      2332.2328
## 4         Texas -100.00000 31.00000         37000    6287.578     13425.8577
## 5  South Dakota -100.00000 44.50000          5600    3115.934       558.0957
## 6  Rhode Island  -71.74233 41.74233          4000    3623.527       873.5025
##   sales_motoroil sales_filters sales_tires sales_headlamps sales_rearlighting
## 1     10646.1263     3962.7175    4863.633       1921.3345           3692.084
## 2       844.2269      524.2226    4728.812        425.4734           2107.706
## 3       640.9263     1003.8087    2410.252       3056.3377           2659.093
## 4     16161.9943    30441.3494   10438.494       2196.3884          35905.807
## 5      5338.5218     4551.7116    3200.116       3823.2335           3946.851
## 6      1758.7899     3633.4848    3170.961       3211.9275           2669.132
##   sales_interiorlighting sales_total
## 1             11227.7133    66980.61
## 2               956.6307    21101.73
## 3              3177.5397    19722.16
## 4              6316.8175   158174.29
## 5               723.8857    30858.35
## 6              3967.7682    26909.09

Datasættet opsummerer salgsindtægter fra sidste regnskabsår for en detailforretning med reservedele til biler. Forhandleren har specialiseret sig i den europæiske parkeringsplads og sender i øjeblikket alle sine salgsordrer til kunder ved dropshipping fra Tyskland, Frankrig, Italien og Spanien. Salget er kategoriseret i større produktgrupper.

Visualisering af salgsdata ved hjælp af folder.minichart

Til at begynde med laver jeg et søjlediagram ved hjælp af folder og folder .minichart. Jeg bruger søjlediagrammerne til at sammenligne salg af pumper og sensorer på tværs af USA.

library(leaflet.minicharts)
library(magrittr)
library(dplyr)

colors = c("#FF0000", "#428EF4")

basemap %>%
  addMinicharts(
    data$longitude, data$latitude,
    chartdata = select(data,sales_sensors,sales_pumps),
    colorPalette = colors,
    width = 45, height = 45
  )
Søjlediagram på kort med folder.minicharts i R

Hvordan er dette sammenlignet med det samlede salg? Nedenstående søjlediagram viser svaret på dette spørgsmål.

colors = c("#FF0000", "#428EF4","black")

basemap %>%
  addMinicharts(
    data$longitude, data$latitude,
    chartdata = select(data,sales_sensors,sales_pumps, sales_total),
    colorPalette = colors,
    width = 45, height = 45
  )
Søjlediagram med samlet salgsindtægt

Jeg kan også lave et overblik som dette ved hjælp af cirkeldiagrammer. Se nedenstående kode:

colors <- c("#FF0000", "#428EF4")

basemap %>%
  addMinicharts(
    data$longitude, data$latitude,
    type = "pie",
    chartdata = select(data,sales_sensors,sales_pumps), 
    colorPalette = colors, 
    width = 60 * sqrt(data$sales_total) / sqrt(max(data$sales_total)), transitionTime = 0
  )
Cirkeldiagram med folder.minicharts i R

Tærtestørrelsen er defineret af cirkelradius. Det er resultatet af den samlede salgsindtægt på tværs af alle produktkategorier. Jeg genererer nu endnu et kort, der viser cirkeldiagrammer med alle produktkategorier.

basemap %>%
  addMinicharts(
    data$longitude, data$latitude,
    type = "pie",
    chartdata = select(data,sales_sensors,sales_pumps,sales_displays,sales_motoroil,sales_filters,sales_tires,sales_headlamps,sales_rearlighting,sales_interiorlighting), 
    width = 60 * sqrt(data$sales_total) / sqrt(max(data$sales_total)), transitionTime = 0
  )
Alle produktgrupper på diagram, ved hjælp af folder.minicharts

Ved at generere visualiseringer som denne hjælper jeg detailhandleren med at forstå det amerikanske marked fra et logistisk distributionssynspunkt.

Andre diagramtyper med folder.minicharts

Ved hjælp af folderen .minicharts kan jeg også vise materialestrømme som retningsbestemte strømme på kortet. Til dette skal jeg konstruere en dataramme , der kontraherer “kilde” og “sink” koordinater i form af bredde- og længdegradsværdier. Derudover skal flowvolumen kvantificeres i datarammen for at plotte.

Sidst, men ikke mindst, kan jeg også bruge folderen .minicharts til at lave animerede diagrammer. Dette er f.eks. nyttigt, når du viser en tidsbaseret trend på et kort.

Resumé af dette indlæg på folderen.minicharts

I denne artikel introducerede jeg folderen .minicharts som en pakke i R til kortbaseret kortplotning. I tidligere artikler havde jeg introduceret folder til fx markørplot eller kortbaserede heatmaps. Denne artikel dokumenterede, hvordan folderen .minicharts kan bruges til at tilføje f.eks. søjlediagrammer og cirkeldiagrammer til et folderkort.

You May Also Like

Leave a Reply

Leave a Reply

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.