データは、長さ4000m以上のVillaribaとVillabajoの2つの村の間の道路沿いの木々の商品(リンゴとバナナ)の分布を示しています。データはすでにビニングされている(つまり、500 mごとに要約されている)か、場所の大きなエラーが提供されているため、500mによるビニングは自然です。カーネル平滑化を介して、それらを平滑化された事後分布として処理およびプロットしたいと思います。ggplot2
パッケージでこれを行うには、2つの明白な方法があります。最初にデータを読み取ります(長い形式)。
library(ggplot2)
databas<-read.csv(text="dist,stuff,val
500,apples,10
1250,apples,25
1750,apples,55
2250,apples,45
2750,apples,25
3250,apples,10
3750,apples,5
500,bananas,7
1250,bananas,14
1750,bananas,20
2250,bananas,17
2750,bananas,10
3250,bananas,30
3750,bananas,20")
最初の試みは、geom_col()
。を使用した退屈なバープロットです。次に、密度プロット(geom_density()
)と平滑化曲線(stat_smooth()
または同等のものgeom_smooth()
)にそれぞれ含まれる2つのggplot2機能を使用できます。3つの方法は次のように実現されます。
p1<-ggplot(databas,aes(dist,val,fill=stuff,alpha=0.5))+geom_col(alpha=0.5,position="dodge")
p2<-ggplot(databas,aes(dist,val,fill=stuff))+stat_smooth(aes(y=val,x=dist),method="gam",se=FALSE,formula=y~s(x,k=7))
p3<-ggplot(databas,aes(dist,val,fill=stuff,alpha=0.5))+geom_density(stat="identity")
library(gridExtra)
grid.arrange(p1,p2,p3,nrow=3)
すべての方法には欠点があります。重ね合わせた密度プロット(下のグラフ)が最も望ましい設計ですが、オプションstat="identity"
(データがビニングされているため)では、通常のように見栄えのよい滑らかな分布を作成できません。このstat_smooth()
オプションはほとんど優れた曲線を提供しますが、これらは単なる曲線です。だから:密度プロットからの着色と平滑化関数からの平滑化を組み合わせる方法は?それは、geom_density()のデータを滑らかにするためstat_smooth()
ですか、それとも曲線の下の半透明の色でスペースを埋めるためですか?
gam
フィットが気に入った場合は、stat = "smooth"
withingeom_ribbon
を使用して曲線を描くことができます。トリックはセットにあるymin
0にしてymax
まで..y..
で作成された特別な変数である、stat_smooth
予測ラインです。
ggplot(databas, aes(x = dist, y = val, fill = stuff)) +
geom_ribbon(stat = "smooth", aes(ymin = 0, ymax = ..y..), alpha = .5,
method = "gam", se=FALSE, formula = y ~ s(x, k = 7))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加