Ich habe 3 SHP-Dateien, die das Haus, Zimmer und Betten eines Hauses jeweils darstellen. Ich muss sie in einem Diagramm mit R so plotten, dass sie sich alle überlappen. Ich weiß, dass in plot
Funktion kann ich line
verwenden, um neue Zeilen auf dem vorhandenen Grundstück zu plotten, gibt es etwas Entsprechendes in spplot
? Vielen Dank.plot mehrere shp-Datei auf einem Graph mit spplot in R
Antwort
Sie das in spplot
sp.layout
Argument verwenden können. Alternativ können Sie ggplot2 verwenden. Einige Beispiel-Code (ungetestete):
library(ggplot2)
shp1_data.frame = fortify(shp1)
shp1_data.frame$id = "shp1"
shp2_data.frame = fortify(shp2)
shp2_data.frame$id = "shp2"
shp = rbind(shp1_data.frame, shp2_data.frame)
ggplot(aes(x = x, y = y, group = group, col = id), data = shp) + geom_path()
In ggplot2
, Spalten in den Daten werden an graphischen Skalen in der Handlung verknüpft. In diesem Fall ist x
die x-Koordinate, y
ist die y-Koordinate, group
ist eine Spalte im data.frame shp, die angibt, zu welchem Polygon ein Punkt gehört, und col
ist die Farbe des Polygons. Die von mir verwendete Geometrie ist geom_path
, die eine Reihe von Linien basierend auf dem Polygon-Eingabedatenrahmen zeichnet. Eine Alternative ist die Verwendung von geom_poly
, die auch das Füllen des Polygons unterstützt.
Hier ist ein Ansatz, mit der geschickten layer()
Funktion aus dem latticeExtra Paket:
# (1) Load required libraries
library(sp)
library(rgeos) # For its readWKT() function
library(latticeExtra) # For layer()
# (2) Prepare some example data
sp1 = readWKT("POLYGON((0 0,1 0,1 1,0 1,0 0))")
sp2 = readWKT("POLYGON((0 1,0.5 1.5,1 1,0 1))")
sp3 = readWKT("POLYGON((0.5 0,0.5 0.5,0.75 0.5,0.75 0, 0.5 0))")
# spplot provides "Plot methods for spatial data with attributes",
# so at least the first object plotted needs a (dummy) data.frame attached to it.
spdf1 <- SpatialPolygonsDataFrame(sp1, data=data.frame(1), match.ID=1)
# (3) Plot several layers in a single panel
spplot(spdf1, xlim=c(-0.5, 2), ylim=c(-0.5, 2),
col.regions="grey90", colorkey=FALSE) +
layer(sp.polygons(sp2, fill="saddlebrown")) +
layer(sp.polygons(sp3, fill="yellow"))
Alternativ können Sie das gleiche Ergebnis über spplot()
‚s sp.layout=
Argument erreichen. (first=FALSE
Angabe stellt sicher, dass das ‚Dach‘ und ‚Tür‘ nach/über dem graue Quadrat als spplot()
s erstes Argument aufgetragen werden.)
spplot(spdf1, xlim=c(-0.5, 2), ylim=c(-0.5, 2),
col.regions="grey90", colorkey=FALSE,
sp.layout = list(list(sp2, fill="saddlebrown", first=FALSE),
list(sp3, fill="yellow", first=FALSE)))
- 1. R: Plot mehrere Spalten in einem Diagramm
- 2. Gitter in einem R-Plot
- 3. Plot Graph basiert Spaltenpaar
- 4. R Pfeilmarkierung von Datenpunkten auf einem Plot
- 5. CrossTab Visulation Graph in R
- 6. Plot Faktor Ebenen in R
- 7. Hinzufügen einer Legende zu einem Plot mit R
- 8. Plot ACF mit Linien in R
- 9. Legendenpositionen mit Paaren plot r
- 10. R: Plot mehrere Boxplots mit Spalten aus Datenrahmen
- 11. Plot ein Entscheidungsbaum mit R
- 12. Plot mehrere Raster in r mit Layout-Funktion
- 13. Panel Plot mit r
- 14. Tornado-Plot in R
- 15. Anzeigewerte in R Plot
- 16. Mehrere .fig-Dateien in einem Plot anzeigen
- 17. R plot - Normalkurven mit Farbverlauf
- 18. haben Plot Punkte auf einem Spektrum in gefärbt R
- 19. Finden von linearen Pfadabschnitten in einem Graph in R
- 20. Heatmap von Deutschland spplot mit
- 21. Empty Plot in R
- 22. Plot auf bestimmte Plot in mehreren Plot-Fenster?
- 23. Plot mehrere Y-Variablen in einem Streudiagramm
- 24. Plot Punkte auf einer Kugel in R
- 25. Plot logistische Regressionskurve in R
- 26. dygraph in R mehrere Plots auf einmal
- 27. R graph grad.distribution funktioniert nicht
- 28. Plot County Daten mit Tooltips in R
- 29. maximale Plot Punkte in R?
- 30. Trennungs-Plot-Analyse mit r
Welchen Aspekt von spplot, den Sie nicht mit Basis-Plot tun können, brauchen Sie? Mit sp-Objekten plotten Sie einfach die erste und zeichnen dann mit add = TRUE, um die anderen zu überlagern. Warum bringen Sie spplot in den Mix? – Spacedman