ggplot2を使って投影されたマップに補間データをプロットしたいが、私は数週間この問題を解決している。誰かが私に助けてくれることを願っています。形状ファイルとデータは、https://www.dropbox.com/s/8wfgf8207dbh79r/gpr_000b11a_e.zip?dl=0とhttps://www.dropbox.com/s/9czvb35vsyf3t28/Mydata.rdata?dl=0にあります。ggplot2を使って投影されたマップに補間データをプロットする方法
まず、シェイプファイルは元々 "lon-lat"投影法を使用していますので、Albers Equal Area(aea)投影に変換する必要があります。
library(automap)
library(ggplot2)
library(rgdal)
load("Mydata.rdata",.GlobalEnv)
canada2<-readOGR("gpr_000b11a_e.shp", layer="gpr_000b11a_e")
g <- spTransform(canada2, CRS("+proj=aea +lat_1=50 +lat_2=70 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0"))
Borders=ggplot() +geom_polygon(data=g,aes(x=long,y=lat,group=group),fill='white',color = "black")
Borders
私たちが見ることができるように、我々は正しく国をプロットすることができます。次に、Krigingメソッドを使ってデータを補間したいのですが、コードはSmoothing out ggplot2 mapから取っています。
coordinates(Mydata)<-~longitude+latitude
proj4string(Mydata)<-CRS("+proj=longlat +datum=NAD83")
sp_mydata<-spTransform(Mydata,CRS(proj4string(g)))
Krig=autoKrige(APPT~1,sp_mydata)
interp_data = as.data.frame(Krig$krige_output)
colnames(interp_data) = c("latitude","longitude","APPT_pred","APPT_var","APPT_stdev")
interp_data=interp_data[,1:3]
ggplot(data=interp_data, aes(x=longitude, y=latitude)) + geom_tile(aes(fill=APPT_pred),color=NA)
最後に、私は、これら2つの数字を組み合わせたいと、私は次のエラーを取得する:Error: Don't know how to add o to a plot
ggplot(data=interp_data, aes(x=longitude, y=latitude)) + geom_tile(aes(fill=APPT_pred),color=NA)+Borders
私の質問は:どのように私は(地図上で補間データをプロットして、グリッド線を追加することができます経度と緯度)。また、カナダ地図全体に合わせて補間データマップをクリップする方法を知りました。助けてくれてありがとう。与える
Krig = autoKrige(APPT~1,sp_mydata)$krige_output
Krig = Krig[!is.na(over(Krig,as(g,"SpatialPolygons"))),] # take only the points falling in poolygons
Krig_df = as.data.frame(Krig)
names(Krig_df) = c("APPT_pred","APPT_var","APPT_stdev","longitude","latitude")
g_fort = fortify(g)
Borders = ggplot() +
geom_raster(data=Krig_df, aes(x=longitude, y=latitude,fill=APPT_pred))+
geom_polygon(data=g_fort,aes(x=long,y=lat,group=group),
fill='transparent',color = "black")+
theme_bw()
Borders
:
唯一の問題は、あなたがまだで、「行方不明」に補間領域を持っているということです
以下の回答を参照してください。また、問題の1つは、 'interp_data'オブジェクトで緯度と経度が反転していることです。 – lbusett
'ggplot()'で作成された2つのオブジェクトを '+'できないので、 'ggplot()+ geom_x()+ ggplot()+ geom_y()'というエラーは発生しません。新しいレイヤーだけを追加できます。 – Axeman
@Axemanありがとうございました。 –