当使用id
将group
转换为region
时,使用fortify{ggplot2}
,SpatialPolygonsDataframe
和data.frame
之间的区别究竟是什么? ?关于使用这些参数的好处/含义,文档并不十分清楚。关于这些的任何想法?
这是一个可重复的例子:
library(ggplot2)
library(UScensus2000tract)
# load data
data("oregon.tract")
# fortify
oregon_noth <- fortify(oregon.tract)
oregon_id <- fortify(oregon.tract, id="tract")
oregon_grp <- fortify(oregon.tract, group="tract")
oregon_reg <- fortify(oregon.tract, region="tract")
identical(oregon_noth, oregon_id)
>[1] TRUE
identical(oregon_id, oregon_grp)
>[1] TRUE
identical(oregon_id, oregon_reg)
>[1] FALSE
答案 0 :(得分:3)
使用ggplot2:::fortify.SpatialPolygonsDataFrame
我们可以看到发生了什么:
function (model, data, region = NULL, ...)
{
attr <- as.data.frame(model)
if (is.null(region)) {
coords <- plyr::ldply(model@polygons, fortify)
message("Regions defined for each Polygons")
}
else {
cp <- sp::polygons(model)
unioned <- maptools::unionSpatialPolygons(cp, attr[,
region])
coords <- fortify(unioned)
coords$order <- 1:nrow(coords)
}
coords
}
完全丢弃所有...
个参数。因此,您可以毫无错误地传递id
或group
,但输出应与仅定义model
相同。
我不确定您使用id
或group
的原因。