尝试按结果变量为县着色时,R plot_usmap() 中出现错误



我正在尝试绘制爱达荷州县级测量的结果。 我不明白下面的错误消息。 下面的代码重现该错误。 我尝试将 map.data 限制为每个县仅一行,但这也会导致错误。

require(usmap)
require(ggplot2)
map.data <- usmap::us_map("counties",
include = "ID")
dim(map.data)
1090   10

按县绘制的随机结果值

n.county <- length(unique(map.data$fips))
set.seed(0)
d <- data.frame( fips = unique(map.data$fips),
values = runif(n.county))
head(d)
fips    values
1 16001 0.8966972
2 16003 0.2655087
3 16005 0.3721239
4 16007 0.5728534
5 16009 0.9082078
6 16011 0.2016819

合并以将"值"变量添加到 map.data

map.data <- merge( map.data, d)
map.data <- map.data[ , c("fips", "values")]
dim(map.data)
1090   2
plot_usmap( regions = "counties",
include = "ID", 
data = map.data,
values = "values") + 
labs( title = "Idaho",
subtitle = "Outcome Y") 

R 错误:

这是我得到的R错误:

不知道如何自动为 data.frame 类型的对象选取比例。默认为连续。
错误:美学长度必须为 1 或与数据相同 (35884(:填充

接下来,我计划使用以下方法根据"值"为县着色:

+ scale_fill_continuous( low = "white", 
high = "red", 
name = "Legend", 
label = scales::comma) + 
theme( legend.position = "right")

显然,问题来自数据帧第二列的名称,您称之为"值"。也许当参数values调用名为values的列时,plot_usmap中断。

当该列的名称为"X"时,您的代码将起作用,例如:

require(usmap)
require(ggplot2)
map.data <- usmap::us_map("counties", include = "ID")
dim(map.data)
n.county <- length(unique(map.data$fips))
set.seed(0)
d <- data.frame( fips = unique(map.data$fips),
X = runif(n.county))
head(d)
map.data <- merge( map.data, d)
map.data <- map.data[ , c("fips", "X")]
dim(map.data)
1090   2
plot_usmap( regions = "counties",
include = "ID", 
data = map.data,
values = "X") + 
labs( title = "Idaho",
subtitle = "Outcome Y") 

相关内容

  • 没有找到相关文章