devtools::install_github("wmurphyrd/fiftystater")
library(fiftystater)
library(ggplot2)
data("fifty_states") # this line is optional due to lazy data loading
december <- read.csv("test.Dec.csv", header = TRUE)
head(december)
State Mean.of.median.housing X X.1 X.2 X.3 X.4 X.5
1 Alabama 128604.11 NA NA NA NA NA NA
2 Alaska NA NA NA NA NA NA NA
3 Arizona 199831.35 NA NA NA NA NA NA
4 Arkansas 107573.94 NA NA NA NA NA NA
5 California 443727.60 NA NA NA NA NA NA
6 Colorado 238422.24 NA NA NA NA NA NA
7 Connecticut 286932.25 NA NA NA NA NA NA
8 Delaware 176772.28 NA NA NA NA NA NA
9 Florida 201340.36 NA NA NA NA NA NA
10 Georgia 151471.39 NA NA NA NA NA NA
11 Hawaii 462844.24 NA NA NA NA NA NA
12 Idaho 151015.16 NA NA NA NA NA NA
13 Illinois 212096.73 NA NA NA NA NA NA
14 Indiana 100004.84 NA NA NA NA NA NA
15 Iowa 145490.91 NA NA NA NA NA NA
16 Kansas 130308.77 NA NA NA NA NA NA
17 Kentucky 135243.13 NA NA NA NA NA NA
18 Louisiana 119259.02 NA NA NA NA NA NA
19 Maine NA NA NA NA NA NA NA
20 Maryland 266604.41 NA NA NA NA NA NA
21 Massachusetts 316337.88 NA NA NA NA NA NA
22 Michigan 152591.44 NA NA NA NA NA NA
23 Minnesota 219975.79 NA NA NA NA NA NA
24 Mississippi 90238.10 NA NA NA NA NA NA
25 Missouri 162622.49 NA NA NA NA NA NA
26 Montana NA NA NA NA NA NA NA
27 Nebraska 129369.15 NA NA NA NA NA NA
28 Nevada 217827.56 NA NA NA NA NA NA
29 New Hampshire 207974.68 NA NA NA NA NA NA
30 New Jersey 311639.37 NA NA NA NA NA NA
31 New Mexico 181346.86 NA NA NA NA NA NA
32 New York 224106.12 NA NA NA NA NA NA
33 North Carolina 163972.77 NA NA NA NA NA NA
34 North Dakota NA NA NA NA NA NA NA
35 Ohio 121977.38 NA NA NA NA NA NA
36 Oklahoma 110820.16 NA NA NA NA NA NA
37 Oregon 209567.20 NA NA NA NA NA NA
38 Pennsylvania 163647.28 NA NA NA NA NA NA
39 Rhode Island 230743.79 NA NA NA NA NA NA
40 South Carolina 127012.49 NA NA NA NA NA NA
41 South Dakota NA NA NA NA NA NA NA
42 Tennessee 111790.22 NA NA NA NA NA NA
43 Texas 123364.33 NA NA NA NA NA NA
44 Utah 207881.14 NA NA NA NA NA NA
45 Vermont NA NA NA NA NA NA NA
46 Virginia 271363.23 NA NA NA NA NA NA
47 Washignton 256817.77 NA NA NA NA NA NA
48 West Virginia 82052.38 NA NA NA NA NA NA
49 Wisconsin 138538.92 NA NA NA NA NA NA
50 Wyoming NA NA NA NA NA NA NA
51 NA NA NA NA NA NA NA
52 NA NA NA NA NA NA NA
december <- december[-(51:52), -(3:9)]
State Mean.of.median.housing
1 Alabama 128604.11
2 Alaska NA
3 Arizona 199831.35
# map_id creates the aesthetic mapping to the state name column in your data
p <- ggplot(december, aes(map_id = december$State)) +
# map points to the fifty_states shape data
geom_map(aes(fill = december$Mean.of.median.housing), map = fifty_states) +
expand_limits(x = fifty_states$long, y = fifty_states$lat) +
coord_map() +
scale_x_continuous(breaks = NULL) +
scale_y_continuous(breaks = NULL) +
labs(x = "", y = "") +
theme(legend.position = "bottom",
panel.background = element_blank())
p
我该如何解决?我尝试了很多选择,但都失败了。 如果有人分享一个很好的来源,如何按州做美国地图,也要感谢。
此致 奥雷克
答案 0 :(得分:2)
如果没有您的确切数据,很难说出问题所在。但是,我已设法使用您在评论中提供的数据的自适应摘要复制错误。使用小写版本的州名称时,错误消失。我还使用sapply(december, length)
检查了所有变量的长度是否相同。
首先,改编数据:
december <- structure(list(state = structure(1:7, .Label = c("Alabama", "Alaska", "Arizona", "Arkansas", "California", "New Jersey", "Wyoming"), class = "factor"), housing = c(128604.1126, 199831.3511, 107573.9375, 443727.5987, 238422.2379, 286932.2548, NA)), .Names = c("state", "housing"), row.names = c(NA, 7L), class = "data.frame")
此版本的代码提供错误:
p <- ggplot(december, aes(map_id = state)) +
geom_map(aes(fill = housing), map = fifty_states) +
expand_limits(x = fifty_states$long, y = fifty_states$lat) +
coord_map() +
scale_x_continuous(breaks = NULL) +
scale_y_continuous(breaks = NULL) +
labs(x = "", y = "") +
theme(legend.position = "bottom",
panel.background = element_blank())
p
seq_len中的错误(nrow(data) - 1):参数必须是可强制的 非负整数
但是使用state
变量的小写版本似乎可以解决它:
december$statelower <- tolower(december$state)
p <- ggplot(december, aes(map_id = statelower)) +
geom_map(aes(fill = housing), map = fifty_states) +
expand_limits(x = fifty_states$long, y = fifty_states$lat) +
coord_map() +
scale_x_continuous(breaks = NULL) +
scale_y_continuous(breaks = NULL) +
labs(x = "", y = "") +
theme(legend.position = "bottom",
panel.background = element_blank())
p