我正在尝试绘制一张地图小的多重网格,显示自1900年以来与佛罗里达相交的飓风/热带风暴。我使用了一些空间查询来为这个项目分配所有大西洋风暴的数据库。
我现在在佛罗里达州的多边形,一些邻近的州,佛罗里达州的几个主要城市,当然还有奥基乔比湖的阴影线上绘制了我有限数量的飓风轨道的shapefile线。这是简单的代码:
library(maptools)
library(gdata)
library(RColorBrewer)
setwd("~/hurricanes")
# read shapefiles
florida <- readShapePoly("florida.shp")
south <- readShapePoly("south.shp")
hurricanes <- readShapeLines("hurricanes-florida.shp")
cities <- readShapePoints("cities.shp")
lakes <- readShapePoly("lakes.shp")
# miami, orlando and tallahassee (in FL)
cities <- subset(cities, ST == "FL")
# don't need ALL the 'canes
hurricanes1900 <- subset(hurricanes, Season >= 1900)
mycolors <- brewer.pal(5, "YlOrRd")
pdf(file = "hurricanemaps.pdf", ,width=8,height=20)
par(mfrow=c(15,5), mar=c(1,1,1,1))
for(i in 1:nrow(hurricanes1900))
{
plot(south, col="#e6e6e6", border = "#999999")
plot(florida, col="#999999", border = "#999999", add = TRUE)
plot(lakes, col="#ffffff", border = "#999999", add = TRUE)
plot(cities, pch=10, cex=.1,col="#000000", bg="#e38d2c", lwd=1, add = TRUE)
plot(hurricanes1900[i,], col = mycolors[cut(hurricanes$MAX_Wind_W, breaks = 5)],
lwd=3, add = TRUE); title(hurricanes1900$Title[i])
}
dev.off()
我遇到的三个大问题:
1)循环给我一张每场风暴的地图。我希望代码每年在网格中生成佛罗里达/南方地图(即使在那些没有风暴的年份)和当年的所有风暴,最好是标签。
2)我想在所有风暴中设置风速的颜色,而不仅仅是循环的每个特定行中的颜色。那样强烈的风暴(如1992年的安德鲁)即使在他们是一年中唯一的风暴时也显得更加暗淡。也许我可以解决这个问题,我记录了一个可以相应设计风格的分类(H1,H2等)变量。
3)假设我能算出第1号,我在每个风暴路径上获取标签时遇到问题。 maptools文档不是很好。
无论如何,这是迄今为止的输出(标题是shapefile中两个字段的串联):
真正的问题是第1号。提前感谢您的帮助。
答案 0 :(得分:0)
鉴于没有可重复的数据,我收集了一些数据用于此演示。请为下次SO用户提供最小的可重现数据。这将有助于您获得更多帮助。
您想要实现的目标可以通过ggplot2完成。如果您想每年绘制一张地图,可以使用def sum[A](a:A,b:A):A={a+b} //declare two arguments
<console>:7: error: type mismatch;
found : A
required: String
def sum[A](a:A,b:A):A={a+b}
。如果要根据风添加颜色,则可以在绘制路径时在facet_wrap()
中执行此操作。如果你想增加飓风&#39;名称,您可以使用ggrepel包,它允许您轻松提供注释。请注意,如果要绘制平滑路径,则还需要进行数据处理。
aes()