所以,我有一个数据集,不仅包含CONUS数据,还包含岛屿地区和阿拉斯加州的数据。现在,我想只绘制CONUS的数据。我知道我可以轻松地将其分配。但有没有更简单的方法呢?也许ggplot中的一个选项我不知道?
以下是代码:
ggplot() +
geom_polygon( data=usamap, aes(x=long, y=lat,group=group),colour="black", fill="white" )+
geom_point(data=df,aes(x=Longitude,y=Latitude))+
scale_colour_gradientn(name = "DL",colours = myPalette(10))+
xlab('Longitude')+
ylab('Latitude')+
coord_map(projection = "mercator")+
theme_bw()+
theme(legend.position = c(.93,.20),panel.grid.major = element_line(colour = "#808080"))+
ggsave("test.png",width=10, height=8,dpi=300)
这是数据集:
https://www.dropbox.com/s/k1z5uquhtc2b9nd/exported.csv?dl=0
答案 0 :(得分:1)
你可以做到这一点并同时使用一个不错的投影:
library(ggplot2)
library(readr)
library(dplyr)
us <- map_data("state")
us <- fortify(us, region="region")
# for theme_map
devtools::source_gist("33baa3a79c5cfef0f6df")
# read your data and filter out points not in CONUS
read_csv("exported.csv") %>%
filter(Longitude>=-124.848974 & Longitude<=-66.885444,
Latitude>=24.396308 & Latitude<=49.384358) -> data
gg <- ggplot()
gg <- gg + geom_map(data=us, map=us,
aes(x=long, y=lat, map_id=region, group=group),
fill="#ffffff", color="#7f7f7f", size=0.25)
gg <- gg + geom_point(data=data,
aes(x=Longitude, y=Latitude),
color="#cb181d", size=1, alpha=1/10)
gg <- gg + coord_map("albers", lat0=39, lat1=45)
gg <- gg + theme_map()
gg
我没有看到美学颜色映射,因此您的颜色缩放不会产生任何影响。我使用alpha来代替重叠/关闭点。
答案 1 :(得分:0)
看看你转贴的问题,我认为到目前为止最好的方法是一个简单的子集。从link开始,你可以看到美国大陆周围的方框是:
(-124.848974, 24.396308) - (-66.885444, 49.384358)
如果你做一个简单的子集:
usamap<-usamap[usamap$Longitude > -124.848 &
usamap$Longitude < -66.886 &
usamap$Latitude > 24.3964 &
usamap$Latitude < 49.3844, ]
您将获得所需的积分。
答案 2 :(得分:0)
由于您说您对ggplot2
解决方案感兴趣,因此您可以考虑修改coord_map()
中的参数。例如:
coord_map(project = "globular",
xlim = c(-125, -66),
ylim = c(24, 50))
当然,"mercator"
参数也有效!