我想绘制两个变量之间(国家边界重叠)的(空间)相关模式。我在ggplot上使用了borders()
函数,但是xlim和ylim没有给出我期望的确切限制,相反,它们给出了整个国家。我想有确切的限制来重叠数据。
library(ncdf4)
library(ggplot2)
library(reshape)
library(maps)
library(stringr)
library(reshape2)
library(mapdata)
library(maptools)
ncfile <- nc_open("/Volumes/KIT/CHIRPS/index/correlation/correlation.amm.allindex.nc")
lon <- ncvar_get(ncfile, "lon")
lat <- ncvar_get(ncfile, "lat")
pr <- ncvar_get(ncfile, "prptotcorrel")
ret <- list ("lat"=lat, "lon"=lon,"pr"= pr)
##
str(ret)
######## melt function for pr
melt_pr <- function(L) {
dimnames(L$pr) <- list(lon = L$lon, lat = L$lat)
rett <- melt(L$pr, value.name ="pr")
}
######
mpr <- melt_pr(ret)
head(mpr)
#
xlims=range(mpr$lon); xlims
ylims=range(mpr$lat); ylims
gcorrelation=ggplot(data = mpr, aes(x = lon, y = lat, fill = pr)) +
geom_tile() +
borders('world', xlim=xlims, ylim=ylims, colour='black', size=.2) +
coord_fixed(xlim=xlims, ylim=ylims) +
labs(x = "Longitude", y = "Latitude") +
scale_fill_gradient2(low = "blue", high = "red", mid = "white",
midpoint = 0, limit = c(-1,1), na.value = NA, name="correlation") +
theme_bw() +
coord_fixed(1.3)
gcorrelation
我希望国家/地区边界与数据完全吻合。 这就是我想要的情节。这是国家的形象;我只想与阴影数据的确切限制重叠。
答案 0 :(得分:0)
欢迎堆栈溢出。如果没有数据样本(as code),将很难提供帮助。我相信{
id: message.author.id,
allow: ['VIEW_CHANNEL']
}
会代替coord_cartesian()
答案 1 :(得分:0)
使用coord_fixed()
的xlim
和ylim
参数代替coord_cartesian()
或coord_map()
。
coord_map()
使用mapproj包定义的任何投影将大约球形的地球部分投影到平坦的2D平面上。
(如@ yake84所建议,最好提供包含代码和数据的问题的简化版本,以便人们可以运行和测试其解决方案。)
退后一步,如果您要开发新的代码,我将避免使用过时的软件包,例如reshape,reshape2和某些空间函数。取而代之的是基于它们的替代品(通常由同一人开发),例如tidyr,sf和ggplot2中的关联函数,例如ggsf()
。
答案 2 :(得分:0)
您好@ yake84和@wibeasley,对不起,我在Stack Overflow方面还很陌生,感谢您的建议,coord_map()提供了正确的预期地图。也感谢您的包装建议。