[英]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")
我必須補充一點,理想情況下, xlim
和ylim
值應設置為包括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")
在ggplot2
或lattice
您需要調整數據的形狀以排列它們。
例如 :
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
的調用中指定n
, from
和to
,並確保它們在兩個調用之間匹配,則您應該能夠使用matplot
一步繪制兩個圖形(您將需要綁定兩組y值成一個矩陣)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.