In diesem Artikel werde ich kartenbasierte Diagramme in R erstellen, indem ich das Paket leaflet .minicharts in R verwende. Ich habe bereits Leaflet zum Erstellen von Markierungen auf Karten und zum Visualisieren räumlicher Verteilungen mit Dichte-Heatmaps vorgestellt. In diesem Blogbeitrag erstelle ich Balkendiagramme, Tortendiagramme und Polargebietsdiagramme mit Leaflet .minicharts in R.
Erstellen einer Grundkarte mit Leaflet in R
Zuerst erstelle ich eine Grundkarte für meine Visualisierung. Dazu kann ich das Paket leaflet in R verwenden. In den folgenden Codezeilen erstelle ich die Grundkarte.
library(knitr)
library(leaflet)
basemap = leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap.DE) %>%
setView(-98,38.5,zoom=4)
basemap
In diesem Fall möchte ich Daten für die USA anzeigen. Aus diesem Grund habe ich die Kartenansicht so eingestellt, dass die meisten US-Bundesstaaten angezeigt werden. Hawaii wird nicht angezeigt.
Importieren von Verkaufsdaten für leaflet.minicharts
Als Nächstes importiere ich Verkaufsdaten für jeden relevanten US-Bundesstaat. Die Daten wurden bereits in Excel aufbereitet und zusammengefasst. Deshalb liegen die Daten in einer csv-Datei vor, die ich in den Arbeitsspeicher importiere.
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
Der Datensatz fasst die Umsatzerlöse des letzten Geschäftsjahres für ein Einzelhandelsunternehmen für Kfz-Ersatzteile zusammen. Der Einzelhändler ist auf den europäischen Parkplatz spezialisiert und versendet derzeit alle seine Verkaufsaufträge per Dropshipping aus Deutschland, Frankreich, Italien und Spanien an Kunden. Der Vertrieb ist in große Produktgruppen kategorisiert.
Visualisierung von Verkaufsdaten mit leaflet.minichart
Zunächst erstelle ich eine Balkendiagrammkarte mit Leaflet und Leaflet .minichart . Ich verwende die Balkendiagramme, um die Verkäufe von Pumpen und Sensoren in den USA zu vergleichen.
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
)
Wie verhält sich das zum Gesamtumsatz? Die folgende Balkendiagrammkarte liefert die Antwort auf diese Frage.
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
)
Eine solche Übersicht kann ich mir auch mit Tortendiagrammen machen. Siehe unten Code:
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
)
Die Tortengröße wird durch den Kreisradius definiert. Er ergibt sich aus dem Gesamtumsatz aller Produktkategorien. Ich generiere jetzt eine weitere Karte, die Tortendiagramme mit allen Produktkategorien anzeigt.
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
)
Durch die Generierung von Visualisierungen wie dieser helfe ich dem Einzelhändler, den US-Markt aus Sicht der Logistikverteilung zu verstehen.
Andere Diagrammtypen mit leaflet.minicharts
Mit leaflet .minicharts kann ich auch Materialflüsse als Richtungsflüsse auf der Karte darstellen. Dazu muss ich einen Datenrahmen konstruieren , der „Quelle“- und „Senke“-Koordinaten in Form von Breiten- und Längenwerten zusammenfasst. Darüber hinaus muss das Durchflussvolumen im zu plottenden Datenrahmen quantifiziert werden .
Zu guter Letzt kann ich auch Leaflet .minicharts verwenden , um animierte Diagramme zu erstellen. Dies ist zB hilfreich, wenn ein zeitbasierter Trend auf einer Karte angezeigt wird.
Zusammenfassung dieses Beitrags von leaflet.minicharts
In diesem Artikel habe ich leaflet .minicharts als Paket in R für kartenbasiertes Diagrammplotten vorgestellt. In früheren Artikeln hatte ich Merkblätter für zB Markerplots oder kartenbasierte Heatmaps vorgestellt. Dieser Artikel dokumentiert, wie Leaflet .minicharts verwendet werden können, um beispielsweise Balkendiagramme und Tortendiagramme zu einer Leaflet- Karte hinzuzufügen .
Wirtschaftsingenieur mit Interesse an Optimierung, Simulation und mathematischer Modellierung in R, SQL, VBA und Python
Leave a Reply