我的问题与此非常相似: R Plot Filled Longitude-Latitude Grid Cells on Map
我使用理查德给出的解决方案将一段时间内的地震数量绘制到加利福尼亚地图上
library(ggplot2)
library(maps)
caliMap <- map_data('state','california',lwd=50)
g <- (ggplot(aes(x=Longitude,y=Latitude,fill=Events),data=eqGrid) +
geom_tile()) +
geom_polygon(data=caliMap,aes(x=long, y=lat, group=group),
colour='firebrick', fill='white', alpha=0, lwd=1.2)
这是Richard给出的解决方案的修改代码。我的问题是,这是否考虑到球体投影到平面上的几何形状的变化?如果是这样,我很难看到这是在做什么。如何更改使用的投影形式?
另外,另外,我如何更改传奇的标题等?从我看到的,如果我更改标题,它将无法正确地从我的data.frame的标题中拉出它们(我真的需要将图例更改为'Events(log n)',但我无法想象它出来了,并把空间放在任何地方弄乱了。
我刚刚开始使用R后看到它有一个看似简单的问题解决方案我找不到其他地方的帮助。我也不是一个非常有经验的程序员,所以如果你能尽可能简单,我感激不尽。
答案 0 :(得分:4)
有许多方法可以将地图从球体投影到平面上。
以下是一些例子:
library(ggplot2)
library(maps)
US_map <- map_data("state")
g <- ggplot(aes(x=long,y=lat,group=group),data=US_map) + geom_path()
g1 <- g + coord_map("albers",lat0=39, lat1=45)
g2 <- g + coord_map("mercator")
g3 <- g + coord_map("gilbert")
g4 <- g + coord_map("stereographic")
g5 <- g + coord_map("cylindrical")
g6 <- g + coord_map("azequalarea")
这些是上例中g1到g6的图:
更多信息可用:
> library(ggplot2)
> ?coord_map
PS:感谢@hrbrmstr指出了Albers投影对美国地图的相关性。
答案 1 :(得分:2)
对于从北到南拉长的州(如加利福尼亚州),California Geological Survey建议Lambert conformal。
以下是Albers和Lambert之间的比较:
library(ggplot2)
library(gridExtra)
library(ggthemes)
cali_map <- map_data('state','california',lwd=50)
gg <- ggplot()
gg <- gg + geom_map(data=cali_map, map=cali_map,
aes(x=long, y=lat, map_id=region),
color="black", fill="white", size=0.25)
gg <- gg + coord_map("lambert", lat0=32.5343, lat=142.0095)
gg <- gg + labs(x=NULL, y=NULL, title="Lambert")
gg <- gg + theme_map()
gg1 <- gg
gg <- ggplot()
gg <- gg + geom_map(data=cali_map, map=cali_map,
aes(x=long, y=lat, map_id=region),
color="black", fill="white", size=0.25)
gg <- gg + coord_map("albers", lat0=32.5343, lat=142.0095)
gg <- gg + labs(x=NULL, y=NULL, title="Albers")
gg <- gg + theme_map()
gg2 <- gg
grid.arrange(gg1, gg2, ncol=2)
请使用单独的问题并将您的数据发布到您的其他问题中。