簡體   English   中英

單個圖形上的內核密度圖

[英]Kernel density plots on a single figure

我一直在嘗試使用R繪制簡單的密度圖:

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

由於我想進行比較,因此我想將兩者繪制在一個圖中。 但是“ matplot”不起作用! 我也嘗試過ggplot2:

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

同樣在這種情況下,情節分開出現(雖然我寫了add = TRUE)!! 任何人都可以想出一個簡單的方法來解決這個問題嗎?

你可以試試:

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

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

我必須補充一點,理想情況下, xlimylim值應設置為包括X1和X2的范圍,可以按如下方式完成:

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")

ggplot2lattice您需要調整數據的形狀以排列它們。

例如 :

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

使用``格子''

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

在此輸入圖像描述

使用``ggplot2`

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

在此輸入圖像描述 編輯添加X1 + X2

使用lattice和擴展的formua接口,這樣做非常容易:

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

在此輸入圖像描述

在基本圖形中,如果保持范圍相同並在它們之間使用par(new=TRUE) ,則可以覆蓋密度圖。 我認為add=TRUE是一個基本的圖形策略,有些功能但並非所有功能都會尊重。

如果在對density的調用中指定nfromto ,並確保它們在兩個調用之間匹配,則您應該能夠使用matplot一步繪制兩個圖形(您將需要綁定兩組y值成一個矩陣)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM