3 つの潜在的な解決策/アプローチを見つけたと思います。
最初のデータ:
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")
最初のアプローチは、人口サイズを示すためにシンボル サイズの代わりにシンボルの色を使用することを除いて、上記のコメントで述べたものと似ています。
# 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")

2 番目のアプローチは、経度緯度値形式を通常のラスターに変換することに依存しており、これをヒート マップとして表すことができます。
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")

ここから持ち上げる:補間なしで不規則な点データから RASTER を作成する方法
また、チェックアウトする価値があります: 「事前にグリッド化された」ポイントからサーフェスを作成します。(reshape2
の代わりに使用raster
)
3 番目のアプローチは、補間に依存して塗りつぶされた輪郭を描画します。
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))

ここからつかむ:不規則なグリッドに等高線をプロットする