我有一个群岛(斐济)的栅格,具有海洋范围的水深测量值(即负值)和岛屿陆地的高度数据(即正值)-见附件。我在R中使用rasterVis包,想要给地图上色,所以测深数据是蓝色的阴影,陆地是绿色的阴影。我正在使用brewer.pal生成蓝色和绿色调色板,然后将它们组合为一个主题,然后使用"levelplot“函数和'at =‘选项来确定从蓝色到绿色的交叉点在哪里(用编号序列从最低的测深点-5150m’到最高的山峰- 1200m )。尽管改变了seq长度

在'at =‘内的值(很多次)我不能让交叉点以零为中心(即从海洋到陆地的过渡-图像中的图例显示零是蓝色的,因此岛屿陆地太小)。这是我的代码,附件是我能得到的最好的图。另外,如果有人知道如何在上面叠加斐济的轮廓地图,那也是很棒的(似乎我不能使用' map‘功能)。
fj<-raster('FJ.asc')
greens<-brewer.pal(9,"Greens")[c(5,6,7,8,9)]
blues<-rev(brewer.pal(9,"Blues")[c(4,5,6,7,8,9)])
myTheme<- rasterTheme(region = c(blues, greens))
col_breaks = c(seq(-5150,-0.0001,length=50), seq(0.0001,1200,length=50))
levelplot(fj, par.settings = myTheme, at=col_breaks)对不起,我不能附加我的ascii栅格
非常感谢
克莱夫
发布于 2018-01-22 20:33:03
添加等高线图(我没有斐济DEM,并且我使用了较少的断点):
levelplot(fj, par.settings = myTheme, at=col_breaks) + contourplot(fj, at = 0.0001 , labels = F)

在0周围添加更多分隔符:
levelplot(fj, par.settings = myTheme, at=col_breaks) + contourplot(fj, at = c(-0.00001,0,0.0001) , labels = F)

使用具有陆地边界的矢量文件(可在Diva-GIS layers上获取
shp <- raster::shapefile('path/to/shapefile.shp')
if (proj4string(fj) != proj4string(shp)) {
shp <- spTransform(shp, proj4string(fj))
}
levelplot(fj, par.settings = myTheme, at=col_breaks) + layer(sp.polygons(shp))

https://stackoverflow.com/questions/48335947
复制相似问题