我有一个融化的数据集,其中还包括从正态分布生成的数据.我想绘制我的数据的经验密度函数与正态分布,但两个生成的密度图的比例是不同的.我可以找到两个独立数据集的这篇文章:
但我无法弄清楚如何将其应用于融化数据.假设我有一个这样的数据框:
df<-data.frame(type=rep(c('A','B'),each=100),x=rnorm(200,1,2)/10,y=rnorm(200))
df.m<-melt(df)
Run Code Online (Sandbox Code Playgroud)
使用以下代码:
qplot(value,data=df.m,col=variable,geom='density',facets=~type)
Run Code Online (Sandbox Code Playgroud)
生成此图表:
鉴于正态分布是参考图,我怎样才能使这两种密度具有可比性?(我更喜欢用qplot
而不是ggplot
)
更新:
我想生产这样的东西(即在情节比较方面)但是ggplot2
:
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
Run Code Online (Sandbox Code Playgroud)
产生这个:
这是你的想法吗?
有一个内置变量,..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")
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
将带有缩放值的新列插入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)
Run Code Online (Sandbox Code Playgroud)