私はRでの空間データ分析に不慣れで、簡単なことをしたいのですが、まだ問題があります... latitudes
とlongitudes
の大きなテーブルがあります
sample = structure(list(Longitude = c(-0.19117, -0.211708, -0.206458,
-0.173862, -0.156618), Latitude = c(51.489096, 51.520075, 51.525301,
51.482442, 51.495752), Location_Easting_OSGR = c(525680L, 524170L,
524520L, 526900L, 528060L), Location_Northing_OSGR = c(178240L,
181650L, 182240L, 177530L, 179040L)), .Names = c("Longitude",
"Latitude", "Location_Easting_OSGR", "Location_Northing_OSGR"
), row.names = c(NA, -5L), class = c("data.table", "data.frame"
))
[〜#〜] gadm [〜#〜] (英国の地図のレベル2)から英国の地図を入手しました。
できるようになりたい
簡単ですか ?そうでない場合は、いくつかのポインタがあります(英国のみをお願いします)乾杯
これはあなたが考えていたものですか?
sample
が小さすぎてヒートマップを示すことができなかったため、(long、lat)=(-1,52)、(-2,54)、および(-4.5、 56)。 IMOマップは、ポイントがないとより有益になります。
また、.Rdataではなくシェープファイルをダウンロードしてインポートしました。その理由は、他のプロジェクトでシェープファイルを見つける可能性がはるかに高く、それらをRにインポートするのが簡単だからです。
setwd("< directory with all your files>")
library(rgdal) # for readOGR(...)
library(ggplot2)
library(RColorBrewer) # for brewer.pal(...)
sample <- data.frame(Longitude=c(-1+rnorm(50,0,.5),-2+rnorm(50,0,0.5),-4.5+rnorm(50,0,.5)),
Latitude =c(52+rnorm(50,0,.5),54+rnorm(50,0,0.5),56+rnorm(50,0,.5)))
UKmap <- readOGR(dsn=".",layer="GBR_adm2")
map.df <- fortify(UKmap)
ggplot(sample, aes(x=Longitude, y=Latitude)) +
stat_density2d(aes(fill = ..level..), alpha=0.5, geom="polygon")+
geom_point(colour="red")+
geom_path(data=map.df,aes(x=long, y=lat,group=group), colour="grey50")+
scale_fill_gradientn(colours=rev(brewer.pal(7,"Spectral")))+
xlim(-10,+2.5) +
coord_fixed()
説明:
このアプローチでは、ggplot
パッケージを使用します。これにより、レイヤーを作成してからマップをレンダリングできます。呼び出しは次のことを行います。
ggplot - establish `sample` as the default dataset and define (Longitude,Latitude) as (x,y)
stat_density2d - heat map layer; polygons with fill color based on relative frequency of points
geom_point - the points
geom_path - the map (boundaries of the admin regions)
scale_fill_gradientn - defines which colors to use for the fill
xlim - x-axis limits
coord_fixed - force aspect ratio = 1, so map is not distorted