3

輪郭を作成し、ポリゴンで輪郭をクリップして、ポリゴン内の輪郭のみを表示したい。

シェープファイルのデータはこちら

Csvファイルはこちら

私が使用したコードは次のとおりです。

library("ggplot2")
library("rgdal")
library("gpclib")
library("maptools")
require(sp) 

age2100 <- read.csv("temp.csv",header=TRUE, sep=",")
shape.dir <- "C:/Users/jdbaba/Documents/R working folder/shape" # use your directory name here

lon.shape <- readOGR(shape.dir, layer = "Export_Output_4")
str(lon.shape)

lon.df <- fortify(lon.shape, region = "Id")
p <- ggplot(lon.df, aes(x = long, y = lat, group = group)) +
    geom_polygon(colour = "black", fill = "grey80", size = 1) +
    theme() 

p <- p + geom_point(data=age2100,aes(x=age2100$x,y=age2100$y,group="z"),size=0.1)
p <- p + geom_density2d(colour="red")
p

ここでは、マップ、ポイント、および等高線を作成しました。使用しているコードが変数 z の等高線を作成したかどうかはわかりません。それが正しくない場合、誰かが私に提案できますか?

私が得たサンプル出力は次のとおりです。

ここに画像の説明を入力

ここで、ポリゴン内の輪郭をクリップし、ポリゴンの外側にある輪郭の部分を非表示にしたいと考えています。

等高線にラベルを追加し、等高線間隔を制御する方法を知りたいです。

私の質問が明確でない場合はお知らせください。

ありがとう

ジババ

4

1 に答える 1

2

あなたの地図を正確に再現することはできません。あなたが提供したコードは、2セットの等高線を含む地図を私に与えます-1つはあなたのように見え、もう1つは地域の南部でそれと重なっています。これはあなたの設定のアーティファクトだと思いgroupます。また、私が想定しているのは湖の南部に島があることがわかります。

ここに画像の説明を入力してください

ggplot呼び出しの最初の部分で何かを見つけて、後の部分で何かを混乱させることがよくあるので、ggplotのものをクリーンアップしてビットに分割するのが好きです。領域をマッピングし、ポイントを描画してから、密度の等高線を追加する方法は次のとおりです。

map <- function(){
  geom_polygon(data=lon.df,aes(x=long,y=lat,group=piece),colour="black",fill="grey80",size=1)
}

points <- function(){
  geom_point(data=age2100,aes(x=x,y=y),size=0.1)
}

density <- function(){
  geom_density2d(data=age2100,aes(x=x,y=y),colour="red")
}

ggplot()+map() +points() +density()

これはこれを与えます:

ここに画像の説明を入力してください

今ではそれはあなたの輪郭がどのように見えるかとは大きく異なります、そして私は理由がわかりません。たぶんあなたのグループパラメータは同じzですべてのポイントをグループ化していますか?

とにかく、密度プロットは必要ないようです。お住まいの地域のZ値のマップが必要です。これには、クリギングまたはその他の補間手法が必要になります。しばらくの間ggplotを忘れて、数字に集中してください。

手始めに、z値で色付けされた点をプロットします。あなたはこれを見るはずです:

ここに画像の説明を入力してください

これにより、少なくとも正しい輪郭がどのように見えるかについての良いアイデアが得られます。

とにかく、これは完全なチュートリアルに入っています。

于 2013-01-17T09:50:08.520 に答える