使用ggplot2叠加地图

时间:2014-11-11 15:57:53

标签: r

我正在使用ggplot2绘制矩阵,然后我使用geom_text在每个点添加一些字母。现在,我想知道是否有可能以及如何覆盖地图,因为这些值代表了欧洲地区。这是我的尝试:

       library(ggplot2)

       mat1<- melt(vals[,t.lat])   # matrix [long,lati]
       mat2<- melt(names[,t.lat])  # matrix [long,lati]

       p  <-ggplot(mat1, aes(lon,lat, fill=val)) + geom_raster() +
       geom_text(label = mat2$val,na.rm=TRUE,size=3)+
       scale_fill_gradient(low = "white", high = "red",na.value="white")

我使用此代码获得的图像是:

enter image description here

我想知道是否可以使用ggplot2添加等高线图来定义区域。有什么想法???

提前致谢 感谢您的评论。我将尝试制作可重复的样本(因为原始数据太多)。结构将是相同的,除了原始矩阵有一些NA。

      library(ggplot2)
      #Coordinates
      lati <- seq(from = 72, to = 34, by =-1) 
      loni <- seq(from=-13,to=34,by=1)

      m1 <- array(runif(length(loni)*length(lati)),dim=c(length(loni),length(lati)))
      m2 <- array(c("A","B"),dim=c(length(loni),length(lati)))

      t.lat  <-c(length(lati):1) #reverse latitude
      mat1<- melt(m1[,t.lat])   # matrix [long,lati]
      mat2<- melt(m2[,t.lat]) 

      names(mat1) <- c("lon","lat","val")
      names(mat2) <- c("lon","lat","val")

      p  <-ggplot(mat1, aes(lon,lat, fill=val)) + geom_raster() +
           geom_text(label = mat2$val,na.rm=TRUE,size=3)+
           scale_fill_gradient(low = "white", high = "red",na.value="white")

然后,我想覆盖由坐标,loni和lati定义的区域,这类似于在背景中添加地图。 我希望这个例子现在的问题更加清晰。

再次感谢。

0 个答案:

没有答案