erstellen (BTW, gibt es ein weiteres Paket, das tun würde, was ich will?)Prospekt auf R: Wie Schichten und Farben für jeden Faktor Ebene in Datenrahmen
Hier ist meine Daten-Set:
> head(df)
id groupID lat lon
511 1 277706 -10.89834 -37.05893
377 2 277706 -10.88870 -37.07695
98 3 277705 -10.89050 -37.09406
392 4 277697 -10.92131 -37.10525
6 5 277705 -10.89050 -37.09406
364 6 277697 -10.93730 -37.11600
I Sie möchten mit Hilfe von Broschüren jede Zeile auf einer Karte basierend auf deren Breite und Länge darstellen. Außerdem soll jeder Marker (oder Popup oder CircleMarker) eine andere Farbe und einen anderen Layer haben, basierend auf der Variablen groupID.
Das Problem ist die Datenänderungen jeden Tag und ich weiß nicht, wie viele verschiedene einzigartige Ebenen ich für die Variable GroupID haben werde. In diesem Beispiel-Dataset gibt es 12 Ebenen, aber es kann zwischen 5 und 30 liegen. Die Beispiele in der documentation arbeiten mit einer vordefinierten Anzahl von Ebenen.
Hier ist, was ich versucht habe:
colorsmap = colors()[1:length(unique(df3$groupID))]
groupColors = colorFactor(palette = "RdYlBu", domain = df3$groupID)
leaflet(data = df3) %>%
addTiles() %>%
addCircleMarkers(lng = ~lon, lat = ~lat, color = ~groupColors(groupID),
group = ~groupID) %>%
#addLegend(position = "topright", pal = groupColors, values = ~groupID) %>%
addLayersControl(~groupID)
Es ein Grundstück zur Verfügung stellt, aber wenn ich nur eine Ebene auszuwählen, führen Sie die anderen nicht disapper, wie sie sollten:
Bild:
Der Datensatz selbst:
> dput(df3)
structure(list(id = 1:20, groupID = c(277698L, 277715L, 277704L,
277706L, 277705L, 277705L, 277719L, 277705L, 277705L, 277709L,
277706L, 277705L, 277704L, 277706L, 277715L, 277702L, 277719L,
277706L, 277715L, 277706L), lat = c(-10.8172615660655, -10.8904055150991,
-10.8887597563482, -10.90203509, -10.9001514, -10.8997748900025,
-10.8960177351343, -10.8896179908615, -10.8991450456802, -10.9224848475651,
-10.9000373151094, -10.8905013650562, -10.8889438100208, -10.90,
-10.8861897462579, -10.9326053452642, -10.8916601751623, -10.902075281944,
-10.8822231928033, -10.9079483812524), lon = c(-36.9248145687343,
-37.0665064455395, -37.0921721937304, -37.05829295, -37.0969278,
-37.0976847916125, -37.0840372102666, -37.0963566353117, -37.0945971936751,
-37.0549293249471, -37.066113628594, -37.0940632483155, -37.095505683692,
-37.0590422449149, -37.0782556623101, -37.0698746017798, -37.0841003949028,
-37.0593363285999, -37.0724709841895, -37.0817244836096)), .Names = c("id",
"groupID", "lat", "lon"), row.names = c(20L, 23L, 8L, 36L, 14L,
13L, 16L, 2L, 11L, 1L, 26L, 6L, 5L, 31L, 22L, 50L, 17L, 34L,
25L, 42L), class = "data.frame")