2

私はRを次のように使用して単純な密度プロットをプロットしようとしています。

plot(density(Data$X1),col="red")
plot(density(Data$X2),col="green")

比較したいので、両方を1つの図にプロットしたいと思います。しかし、「matplot」は機能しません!! また、ggplot2を次のように試しました。

library(ggplot2)
qplot(Data$X1, geom="density")
qplot(Data$X2, add = TRUE, geom="density")

この場合も、プロットは別々に表示されます(add = TRUEと書きましたが)!! 誰かが問題の簡単な解決策を思い付くことができますか?

4

4 に答える 4

3

あなたが試すことができます:

plot(density(Data$X1),col="red")

points(density(Data$X2),col="green")

xlimとの値は、理想的にはX1とX2の両方の範囲を含むように設定する必要があることを追加する必要がありylimます。これは、次のように実行できます。

foo <- density(Data$X1)

bar <- density(Data$X2)

plot(foo,col="red", xlim=c(min(foo$x,bar$x),max(foo$x,bar$x)) ylim=c(min(foo$y,bar$y),max(foo$y,bar$y))

points(bar,col="green")

于 2013-02-15T22:18:31.610 に答える
3

ggplot2または、latticeデータを再形成してそれらを推測する必要があります。

例えば ​​:

    dat <- data.frame(X1= rnorm(100),X2=rbeta(100,1,1))
    library(reshape2)
    dat.m <- melt(dat)

``lattice`を使用する

  densityplot(~value , groups = variable, data=dat.m,auto.key = T)

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

``ggplot2`を使用する

 ggplot(data=dat.m)+geom_density(aes(x=value, color=variable))

ここに画像の説明を入力してください 編集追加X1+X2

ラティスと拡張formuaインターフェースを使用すると、これを行うのは非常に簡単です。

densityplot(~X1+X2+I(X1+X2) , data=dat)   ## no need to reshape data!!

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

于 2013-02-15T22:46:49.853 に答える
1

ベースグラフィックスでは、範囲を同じに保ち、それらの間で使用する場合、密度プロットをオーバーレイできpar(new=TRUE)ます。add=TRUE一部の機能は尊重するが、すべてが尊重するわけではない基本的なグラフィック戦略だと思います。

于 2013-02-15T22:16:32.843 に答える
0

の呼び出しで、、を指定しn、それらが2つの呼び出し間で一致することを確認すると、両方を1つのステップでプロットできるはずです(2セットのy値を1つのマトリックスにバインドする必要があります) 。fromtodensitymatplot

于 2013-02-15T23:28:34.483 に答える