suppressPackageStartupMessages(library(sf)) options(rgdal_show_exportToProj4_warnings = "none") if (require(dplyr, quietly = TRUE)) { # plot linestrings: l1 = st_linestring(matrix(runif(6)-0.5,,2)) l2 = st_linestring(matrix(runif(6)-0.5,,2)) l3 = st_linestring(matrix(runif(6)-0.5,,2)) s = st_sf(a=2:4, b=st_sfc(l1,l2,l3)) plot(s, col = s$a, axes = FALSE) plot(s, col = s$a) if (suppressPackageStartupMessages(require(sp, quietly = TRUE))) { attr(s$b, "proj4string") = sp::CRS("+proj=longlat +ellps=WGS84 +no_defs")@projargs } plot(s, col = s$a, axes = TRUE) plot(s, col = s$a, lty = s$a, lwd = s$a, pch = s$a, type = 'b') l4 = st_linestring(matrix(runif(6),,2)) plot(st_sf(a=1,b=st_sfc(l4)), add = TRUE) # plot multilinestrings: ml1 = st_multilinestring(list(l1, l2)) ml2 = st_multilinestring(list(l3, l4)) ml = st_sf(a = 2:3, b = st_sfc(ml1, ml2)) plot(ml, col = ml$a, lty = ml$a, lwd = ml$a, pch = ml$a, type = 'b') # plot points: p1 = st_point(c(1,2)) p2 = st_point(c(3,3)) p3 = st_point(c(3,0)) p = st_sf(a=2:4, b=st_sfc(p1,p2,p3)) plot(p, col = s$a, axes = TRUE) plot(p, col = s$a) plot(p, col = p$a, pch = p$a, cex = p$a, bg = s$a, lwd = 2, lty = 2, type = 'b') p4 = st_point(c(2,2)) plot(st_sf(a=1, st_sfc(p4)), add = TRUE) # multipoints: mp1 = st_multipoint(matrix(1:4,2)) mp2 = st_multipoint(matrix(5:8,2)) mp = st_sf(a = 2:3, b = st_sfc(mp1, mp2)) plot(mp) plot(mp, col = mp$a, pch = mp$a, cex = mp$a, bg = mp$a, lwd = mp$a, lty = mp$a, type = 'b') # polygon: outer = matrix(c(0,0,10,0,10,10,0,10,0,0),ncol=2, byrow=TRUE) hole1 = matrix(c(1,1,1,2,2,2,2,1,1,1),ncol=2, byrow=TRUE) hole2 = matrix(c(5,5,5,6,6,6,6,5,5,5),ncol=2, byrow=TRUE) pl1 = st_polygon(list(outer, hole1, hole2)) pl2 = st_polygon(list(outer+10, hole1+10, hole2+10)) po = st_sf(a = 2:3, st_sfc(pl1,pl2)) plot(po, col = po$a, border = rev(po$a), lwd=3) # multipolygon r10 = matrix(rep(c(0,10),each=5),5) pl1 = list(outer, hole1, hole2) pl2 = list(outer+10, hole1+10, hole2+10) pl3 = list(outer+r10, hole1+r10, hole2+r10) mpo1 = st_multipolygon(list(pl1,pl2)) mpo2 = st_multipolygon(list(pl3)) mpo = st_sf(a=2:3, b=st_sfc(mpo1,mpo2)) plot(mpo, col = mpo$a, border = rev(mpo$a), lwd = 2) # geometrycollection: gc1 = st_geometrycollection(list(mpo1, st_point(c(21,21)), l1 * 2 + 21)) gc2 = st_geometrycollection(list(mpo2, l2 - 2, l3 - 2, st_point(c(-1,-1)))) gc = st_sf(a=2:3, b = st_sfc(gc1,gc2)) plot(gc, cex = gc$a, col = gc$a, border = rev(gc$a) + 2, lwd = 2) plot(gc1) plot(st_sfc(mp1, mpo1)) # color ramp nc = st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE) plot(nc) plot(nc, axes = TRUE) plot(nc, col="lightgrey") plot(st_centroid(nc), add = TRUE, col = 1) if ("geometry" %in% names(nc)) { nc %>% select(geometry) %>% plot() } nc$f = cut(nc[[1]], 5) plot(nc["f"], key.pos = 1) plot(nc[1], key.pos = 1) # test background map plotting: load("bgmap.rda") merc = st_crs(3857) WGS84 = st_crs(4326) nc = st_transform(nc, WGS84) ## ggmap: #library(ggmap) #bgMap = get_map(unname(st_bbox(nc)), source = "google", zoom = 8) plot(st_transform(nc[1], merc), bgMap = bgMap) # RgoogleMaps: #library(RgoogleMaps) #center = c(mean(st_bbox(nc)[c(2,4)]), mean(st_bbox(nc)[c(1,3)])) #g = GetMap(center=center, zoom=6) # google par(mar = c(0,0,1,0)) plot(st_transform(nc, merc), bgMap = g) m = st_make_grid() st_crs(m) = NA_crs_ m = st_segmentize(m, 2) st_crs(m) = 4326 plot(m, axes = TRUE) g = st_transform(m, st_crs("+proj=ortho +lat_0=30 +lon_0=45"), check = TRUE) plot(g, axes = TRUE) nc[[1]] = NA nc[[10]] = 1 plot(nc, pal = rainbow, nbreaks = 3) plot(nc, pal = rainbow, breaks = "jenks", nbreaks = 3) plot(nc, pal = rainbow, breaks = (0:10)/3) # logz: nc$e = 10^(nc$SID74) plot(nc["e"], logz = TRUE) # shared key: plot(nc[c("SID74", "SID79")], key.pos = -1) plot(nc[c("BIR74", "BIR79")], key.pos = 1, logz=TRUE) }