gpt4 book ai didi

r - 理解ggplot2 geom_map map_id

转载 作者:行者123 更新时间:2023-12-04 09:42:59 24 4
gpt4 key购买 nike

这来自 ggplot2 文档:

# Better example
crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests)
library(reshape2) # for melt
crimesm <- melt(crimes, id = 1)
if (require(maps)) {
states_map <- map_data("state")
ggplot(crimes, aes(map_id = state)) + geom_map(aes(fill = Murder), map = states_map) + expand_limits(x = states_map$long, y = states_map$lat)
last_plot() + coord_map()
ggplot(crimesm, aes(map_id = state)) + geom_map(aes(fill = value), map = states_map) + expand_limits(x = states_map$long, y = states_map$lat) + facet_wrap( ~ variable)
}

我不明白这是如何工作的,因为 states_map 中没有通用标识符使用“区域”命名状态列和 crimes 的数据框标记状态的数据框,“状态”。什么将数据与 map 联系起来?

在此 example海报重命名 map 数据框的列以符合数据,但 ggplot2 文档似乎没有这样做。如何?当我重命名 states_map 的列时在上面的例子中,“状态”对两个数据帧都是通用的,它破坏了代码。
crimes <- data.frame(state = tolower(rownames(USArrests)), USArrests)
library(reshape2) # for melt
crimesm <- melt(crimes, id = 1)
if (require(maps)) {
states_map <- map_data("state")
##### my attempt to fix what isn't broken #################
names(states_map)[5]<-"state"
###########################################################
ggplot(crimes, aes(map_id = state)) + geom_map(aes(fill = Murder), map = states_map) + expand_limits(x = states_map$long, y = states_map$lat)
last_plot() + coord_map()
# Error: all(c("x", "y", "id") %in% names(map)) is not TRUE
}

谢谢。

最佳答案

如果您查找 geom_map 的代码:

function (mapping = NULL, data = NULL, stat = "identity", ..., 
map, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)
{
stopifnot(is.data.frame(map))
if (!is.null(map$lat))
map$y <- map$lat
if (!is.null(map$long))
map$x <- map$long
if (!is.null(map$region))
map$id <- map$region
stopifnot(all(c("x", "y", "id") %in% names(map)))

# etcetera...
}

这意味着,为了正确构建 geom,数据框 map将使用 x、y 和 id 列生成。与 aes(map_id = state)您基本上是在分配 crimes$statemap$id (以我的理解)

如果您没有 id map 数据中的列,名为 region 的列将用作您的 id 列。
您可以通过更改 states_map$region 的名称来测试这一点。至 states_map$id
names(states_map)[5]<-"id" 

这适用于给定的示例。

关于r - 理解ggplot2 geom_map map_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31410820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com