2017-08-11 11 views
1

私はを持つ地図を作成するのにいくつか問題がありますが、それ以上の点を投影するのはgeom_pointです。 pdfやその他のサポートでエクスポートする場合、ポイントのサイズは変化します(彼女は絶対で軸によらないため)。私はそれを変更する方法を調査し、多くの答えを見つけました。なぜなら、そうでない場合、軸の長さが変わるたびに楕円形に変化するからです。しかし、マップ上で作業するので、出力を修正してマップの歪みを避けるためにcoord_fixedを使用しているので、ポイントサイズをプロットサイズに相対的に固定することができれば、それは問題ではないでしょう。ggplot geom_pointさまざまなサイズのウィンドウサイズ

解決策はありますか?私は人工的に楕円を作成するためにgeom_polygonを使用することを示唆している興味深いものを読んだ。今、私は私のポイントの中心がある場所を知って、私は私のデータとそれを実装する方法がわからない

  • まず、私は、後でどのように言うことができる:しかし、私はこの方法で2つの問題を抱えていますどのようにすべての中心を定義し、次に塗りつぶされた丸いポリゴンを定義するか?

  • 第2回私はscale_size_continuousを使用して、他の変数と比較して小さい点または大きな点をプロットしました。 geom_polygonでどうすれば実装できますか?

FACIT:私はオーバーライドの可能性がポイントサイズのための相対的な単位を決定するために、不可能で、または私は機能geom_polygonと同じものを作成することができる方法を理解するためにいくつかの助けを借りて、どちらか幸せになります。

ここでは小さな再現可能な例に参加しようとしました。これは単なる例ですが、私のデータの問題は、閉じた小さな値(主に再現可能な例の小さなドットのような1)が多いため、実際には良いように見えますが、エクスポートすると非常に大きくなりますオーバープロットで多くの問題を作り出しています。そのため、この比率を修正する必要があります。

Link for the map informationssecond link for map informations

dat <- data.frame(postcode=c(3012, 2000, 1669, 4054, 6558), n=c(1, 20, 40, 60, 80)) 

ch <- read.csv("location/PLZO_CSV_LV03/PLZO_CSV_LV03.csv", sep=";")#first link, to attribute a geographical location for each postcode 
ch <- ch%>% 
    distinct(PLZ, .keep_all=TRUE)%>% 
    group_by(PLZ, N, E)%>% 
    summarise 
ch <- ch%>% 
    filter(PLZ %in% dat$postcode) 
ch <- ch%>% 
    arrange(desc(as.numeric(PLZ))) 
dat <- dat%>% 
    arrange(desc(as.numeric(postcode))) 
datmap <- bind_cols(dat, ch) 

ch2 <- readOGR("location/PLZO_SHP_LV03/PLZO_PLZ.shp")#second link, to make the shape of the country 
ch2 <- fortify(ch2) 

a <- ggplot()+ 
geom_polygon(dat=ch2, aes(x=long, y=lat, group=group), colour="grey75", fill="grey75")+ 
geom_jitter(data=datmap, aes(x=E, y=N, group=FALSE, size=n), color=c("red"))+ #here I put geom_jitter, but geom_point is fine too 
scale_size_continuous(range=c(0.7, 5))+ 
coord_fixed() 
print(a) 

助けを事前に感謝!

答えて

3

あなたはこれを試してみてください最後のプロットを保存し、ポイント/ラインなどに使用する倍率を調整するためにggsave()を使用することができます。

ggplot(data = ch2) + 
    geom_polygon(aes(x=long, y=lat, group=group), 
       colour="grey85", fill="grey90") + 
    geom_point(data=datmap, aes(x=E, y=N, group=FALSE, size=n), 
      color=c("red"), alpha = 0.5) + 
    scale_size_continuous(range=c(0.7, 5)) + 
    coord_fixed() + 
    theme_void() 

ggsave(filename = 'plot.pdf', scale = 2, width = 3, height = 3) 

scaleパラメータで遊んでみてください(と幅と高さを必要に応じ)まであなたは結果に満足しています。

geom_jitter()を使用しないでください:ランダムなXYバリエーションがポイントに追加されます。オーバープロットを処理するには、透明度を追加することができます。これにはalphaパラメータを追加しました。私も軸と背景を取り除くためにtheme_void()を使いました。

マップ情報を含む形状ファイルはかなり重いので、this oneのようなスイスのキャントンで簡単なものを試すことができます。 enter image description here

+0

ありがとうございました!私はすでにtheme_voidを使用しています。私は最小限の例を挙げたいと思っていたので、私はちょうどそれを手放しました。そして、cantonsのアイデアに感謝します。実際に、スイスの形を湖と山々にプロットするために、これは一例です。しかし、私は後で私の仕事の中でいくつかの州計画を必要とするでしょう。ありがとう、私は見ていきます!アルファチップもありがとう。私はR Sweaveを使用していますので、プロットを保存してLaTeX環境でそれを '\ includegraphics'を使って追加するとよいでしょう。それはうまくいくようですので、どうもありがとうございます! – GaryDe

+1

ggsaveは、プロットでスタンドアロンファイルを作成したい場合に最適です。代わりにSweaveやknitrを使用して図形を文書に埋め込む予定の場合は、テーマオプションを使用してポイントサイズを調整することもできます。 'theme_void(base_size = 10)' – PeerEZ

+0

ありがとう、それはうまく動作します:) – GaryDe

関連する問題