我想使用 facet_wrap 将一些数据绘制为散点图,同时叠加一些信息,例如线性回归和密度。我设法做到了所有这些,但是密度值与我的点不成比例,这是正常的事情,因为这些点很远。不过,我想缩放和移动我的密度曲线,使其清晰可见;我不关心它的真实价值,而是更关心它的形状。
这是我所拥有的一个夸张的最小工作示例:
set.seed(48151623)
mydf <- data.frame(x1=rnorm(mean=5,n=100),x2=rnorm(n=100,mean=10),x3=rnorm(n=100,mean=20,sd=3))
mydf$var <- mydf$x1 + mydf$x2 * mydf$x3
mydf.wide <- melt(mydf,id.vars='var',measure.vars=c(1:3))
ggplot(data=mydf.wide,aes(x=value,y=var)) +
geom_point(colour='red') +
geom_smooth(method='lm') +
stat_density(aes(x=value,y=..scaled..),position='identity',geom='line') +
facet_wrap(~variable,scale='free_x')
结果是:
我想要的类似于这个丑陋的黑客:
stat_density(aes(x=value,y=..scaled..*100+200),position='identity',geom='line')
理想情况下,我会使用y=..scaled..* diff(range(value)) + min(value)
,但是当我这样做时,我收到一个错误,提示找不到“价值”。我怀疑这个问题与刻面有关,但我更愿意保留我的刻面。
在这种情况下如何缩放和移动密度曲线?