R 绘制2D人口分布的热图(或类似图)

R 绘制2D人口分布的热图(或类似图),r,interpolation,contour,r-raster,bilinear-interpolation,R,Interpolation,Contour,R Raster,Bilinear Interpolation,我想知道怎样才能画出人口比例的图像(pop.prop) 在这些位置(x和y),以便我可以清楚地看到人口分布 数据如下: pts.pr = pts.cent[pts.cent$PIDS==3, ] pop = rnorm(nrow(pts.pr), 0, 1) pop.prop = exp(pop)/sum(exp(pop)) pts.pr.data = as.data.frame(cbind(pts.pr@coords, cbind(pop.prop)))

我想知道怎样才能画出人口比例的图像(pop.prop) 在这些位置(x和y),以便我可以清楚地看到人口分布

数据如下:

pts.pr = pts.cent[pts.cent$PIDS==3, ]    
pop = rnorm(nrow(pts.pr), 0, 1)    
pop.prop = exp(pop)/sum(exp(pop))    
pts.pr.data = as.data.frame(cbind(pts.pr@coords, cbind(pop.prop)))

            x        y    pop.prop
3633 106.3077 38.90931 0.070022855    
3634 106.8077 38.90931 0.012173106    
3756 106.3077 38.40931 0.039693085    
3878 105.8077 37.90931 0.034190747    
3879 106.3077 37.90931 0.057981214    
3880 106.8077 37.90931 0.089484103    
3881 107.3077 37.90931 0.026018622    
3999 104.8077 37.40931 0.008762790    
4000 105.3077 37.40931 0.030027889    
4001 105.8077 37.40931 0.038175671    
4002 106.3077 37.40931 0.017137084    
4003 106.8077 37.40931 0.038560394    
4123 105.3077 36.90931 0.021653256    
4124 105.8077 36.90931 0.107731536    
4125 106.3077 36.90931 0.036780336    
4247 105.8077 36.40931 0.269878770    
4248 106.3077 36.40931 0.004316260    
4370 105.8077 35.90931 0.003061392    
4371 106.3077 35.90931 0.050781007    
4372 106.8077 35.90931 0.034190670    
4494 106.3077 35.40931 0.009379213

x
是经度,
y
是纬度。

我想我已经找到了三种可能的解决方案/方法

首先是数据:

pop <- read.table(header=TRUE, 
text="
       x        y        prop
106.3077 38.90931 0.070022855    
106.8077 38.90931 0.012173106    
106.3077 38.40931 0.039693085    
105.8077 37.90931 0.034190747    
106.3077 37.90931 0.057981214    
106.8077 37.90931 0.089484103    
107.3077 37.90931 0.026018622    
104.8077 37.40931 0.008762790    
105.3077 37.40931 0.030027889    
105.8077 37.40931 0.038175671    
106.3077 37.40931 0.017137084    
106.8077 37.40931 0.038560394    
105.3077 36.90931 0.021653256    
105.8077 36.90931 0.107731536    
106.3077 36.90931 0.036780336    
105.8077 36.40931 0.269878770    
106.3077 36.40931 0.004316260    
105.8077 35.90931 0.003061392    
106.3077 35.90931 0.050781007    
106.8077 35.90931 0.034190670    
106.3077 35.40931 0.009379213")


从这里开始:

当x和y值相同时,如何生成多边形?但是如果你所有的值在x和y上都有一些不同,那么就用传单来表示R。实际上,我把多边形网格化,这里的x和y是这些细胞在多边形内的质心位置。绘制多边形的数据非常大。你能给我看一张你想要的图像吗?如果你只想在每个象限中可视化pop.prop,你可以用(pts.pr.data,plot(x,y,cex=pop.prop*10))做一些简单的事情。
。但是你使用的术语“不规则形状多边形”让我对你真正想要的东西感到困惑。库(传单)库(magrittr)传单()%%>%addTiles()%%>%add矩形(lng1=102.3,lat1=32.078039,lng2=108.4,lat2=38.062717,fillColor=“transparent”)%%addMarkers(lng=markers$V1,lat=markers$V2)试试这个,看看你是否可以根据自己的需要修改它
# I might be overcomplicating things a bit with this colour function

cfun <- function(x, bias=2) {
    x <- (x-min(x))/(max(x)-min(x))
    xcol <- colorRamp(c("lightyellow", "orange", "red"), bias=bias)(x)
    rgb(xcol, maxColorValue=255)
}

# It is possible to also add a colour key, but I didn't bother

plot(pop$x, pop$y, col=cfun(pop$prop), cex=4, pch=20,
    xlab="Lon.", ylab="Lat.", main="Population Distribution")
library(raster)
e <- extent(pop[,1:2])

# this simple method of finding the correct number of rows and
# columns by counting the number of unique coordinate values in each
# dimension works in this case because there are no 'islands'
# (or if you wish, just one big 'island'), and the points are already
# regularly spaced.

nun <- function(x) { length(unique(x))}

r <- raster(e, ncol=nun(pop$x), nrow=nun(pop$y))

x <- rasterize(pop[, 1:2], r, pop[,3], fun=sum)
as.matrix(x)

cpal <- colorRampPalette(c("lightyellow", "orange", "red"), bias=2)

plot(x, col=cpal(200),
    xlab="Lon.", ylab="Lat.", main="Population Distribution")
library(akima)

# interpolation
pop.int <- interp(pop$x, pop$y,  pop$prop)

filled.contour(pop.int$x, pop.int$y, pop.int$z,
    color.palette=cpal,
    xlab="Longitude", ylab="Latitude",
    main="Population Distribution",
    key.title = title(main="Proportion", cex.main=0.8))