2014-01-18 9 views
6

私は、正常な分布から生成されたデータも含んだ溶けたデータセットを持っています。私は正規分布に対して私のデータの経験密度関数をプロットしたいが、2つのプロット密度のプロットのスケールは異なる。私は2つの別々のデータセットのために、この記事を見つけることができる:データが溶けているggplotの密度プロット(いくつかの変数)を縮尺する方法

Normalising the x scales of overlaying density plots in ggplot

が、私は溶けたデータに適用する方法を見つけ出すことができませんでした。私はこのようなデータフレームがあるとします。

以下のコードを使用して
df<-data.frame(type=rep(c('A','B'),each=100),x=rnorm(200,1,2)/10,y=rnorm(200)) 
df.m<-melt(df) 

qplot(value,data=df.m,col=variable,geom='density',facets=~type) 

は、このグラフを生成します。 enter image description here

は、どのように私はその事実を与えられた同等の2つの密度を作ることができます正規分布は参照プロットですか?私は(プロット-比較の観点でIE)このような何かを生成したい しかしggplot2と::

UPDATEを(私の代わりにggplotqplotを使用することを好む)

これを生成
plot(density(rnorm(200,1,2)/10),col='red',main=NA) #my data 
par(new=T) 
plot(density(rnorm(200)),axes=F,main=NA,xlab=NA,ylab=NA) # reference data 

enter image description here

+1

http://stackoverflow.com/questions/13501217/ggplot2-for-grayscale-printouts – user3132179

答えて

5
df<-data.frame(type=rep(c('A','B'),each=100),x = rnorm(200,1,2)/10, y = rnorm(200)) 
df.m<-melt(df) 

require(data.table) 
DT <- data.table(df.m) 

DTにスケーリングされた値を持つ新しい列を挿入します。その後、プロットします。

DT <- DT[, scaled := scale(value), by = "variable"] 
str(DT) 

ggplot(DT) + 
    geom_density(aes(x = scaled, color = variable)) + 
    facet_grid(. ~ type) 

qplot(data = DT, x = scaled, color = variable, 
     facets = ~ type, geom = "density") 

# Using fill (inside aes) and alpha outside(so you don't get a legend for it) 
ggplot(DT) + 
    geom_density(aes(x = scaled, fill = variable), alpha = 0.2) + 
    facet_grid(. ~ type) 

qplot(data = DT, x = scaled, fill = variable, geom = "density", alpha = 0.2, facets = ~type) 

# Histogram 
ggplot(DT, aes(x = scaled, fill = variable)) + 
    geom_histogram(binwidth=.2, alpha=.5, position="identity") + 
    facet_grid(. ~ type, scales = "free") 

qplot(data = DT, x = scaled, fill = variable, alpha = 0.2, facets = ~type) 

enter image description here

+0

おかげで、しかし、 'X'があるあなたの写真では、あなたが見ることができるように、グレースケール画像のためにこれを見ます言い換えれば、彼らはまだ匹敵していません。私は、私が私のポストで言及したリンクのように、スケール「y」に「x」をスケールしたいと思います。 – Amin

+0

@Amin私は私の答えを編集します。タイプの代わりに変数を使用して値の列グループをスケールするだけで済みます。 – marbel

+0

ありがとうマーティン。印刷のようにグラフをグレーまたは白黒に変換できますか? – Amin

6

が、これはあなたが考えていたものです:

これは、画像コードはありますか?

enter image description here

がありますビルトインこれを自動的に行い、変数、..scaled..

set.seed(1) 
df<-data.frame(type=rep(c('A','B'),each=100),x=rnorm(200,1,2)/10,y=rnorm(200)) 
df.m<-melt(df) 
ggplot(df.m) + 
    stat_density(aes(x=value, y=..scaled..,color=variable), position="dodge", geom="line") 
+0

はい。これもうまくいくと思われ、 'DT'を使う必要はありません。しかし、' x'をあまりに大きくするか、少なくともyより大きくするように見えます。 – Amin

関連する問題