Tôi muốn vẽ SpatialPolygons
từ thư viện sp
có lỗ hổng trong ggplot2. Nhờ người khác hỏi về stackoverflow, tôi biết rằng điều này được phép khi giao dịch với chiều kim đồng hồ bằng văn bản đa giác:
http://stackoverflow.com/questions/12047643/geom-polygon-with-multiple-hole/12051278#12051278
Thật vậy, khi chuyển một SpatialPolygons
sử dụng broom::tidy
(thay thế ggplot2::fortify
), lỗ đa giác được lưu trong chiều kim đồng hồ để được vẽ như lỗ.
Trong ggplot2, cách các đa giác có lỗ được rút ra lực để vẽ chúng khi sử dụng fill
và một lần khác bằng cách sử dụng colour
, nếu không bạn có thể thấy các đường chéo đa giác. Khi giao dịch với nhiều subpolygons, một số có lỗ, điều này phức tạp hơn, thứ tự các tính năng điểm như được xác định bởi broom::tidy
có thể không cho phép điền các đa giác (xem hình bên dưới).
Có ai trong số các bạn có một giải pháp để loại bỏ hành vi này?Vẽ SpatialPolygons với nhiều subpolygons và lỗ bằng cách sử dụng ggplot2
Dưới đây là một ví dụ tái sản xuất:
library(sp)
library(ggplot2)
# Create two polygons: second would be a hole inside the first
xy = cbind(
x = c(13.4, 13.4, 13.6, 13.6, 13.4),
y = c(48.9, 49, 49, 48.9, 48.9)
)
hole.xy <- cbind(
x = c(13.5, 13.5, 13.45, 13.45, 13.5),
y = c(48.98, 48.92, 48.92, 48.98, 48.98)
)
# Transform as SpatialPolygons with holes
xy.sp <- SpatialPolygons(list(
Polygons(list(Polygon(xy),
Polygon(hole.xy, hole = TRUE)), "1"),
Polygons(list(Polygon(xy + 0.2),
Polygon(xy + 0.35),
Polygon(hole.xy + 0.2, hole = TRUE)), "2")
))
# Transform SpatialObject to be used by ggplot2
xy.sp.l <- broom::tidy(xy.sp)
ggplot(xy.sp.l) +
geom_polygon(aes(x = long, y = lat, group = id, fill = id))
Một giải pháp sẽ bao gồm tách các đa giác trong cuộc gọi SpatialPolygons chức năng. ví dụ. Hai đa giác với id = 2 trở thành 2a & 2b. Đây có phải là một khả năng hoặc bạn đang tìm kiếm một giải pháp từ xy.sp.l trở đi. –