强化{ggplot2}中id,group和region之间的区别

时间:2015-11-25 15:00:10

标签: r ggplot2 shape spatial fortify

当使用idgroup转换为region时,使用fortify{ggplot2}SpatialPolygonsDataframedata.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

1 个答案:

答案 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
}

完全丢弃所有...个参数。因此,您可以毫无错误地传递idgroup,但输出应与仅定义model相同。

我不确定您使用idgroup的原因。