r - 使用 ggplot2 : Create faceted scatterplot with scaled and moved density

标签 r ggplot2

我想使用 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')

结果是:
example of current plot

我想要的类似于这个丑陋的黑客:
stat_density(aes(x=value,y=..scaled..*100+200),position='identity',geom='line')

理想情况下,我会使用 y=..scaled..* diff(range(value)) + min(value)但是当我这样做时,我收到一条错误消息,说找不到“值”。我怀疑问题与刻面有关,但我更愿意保留刻面。

在这种情况下,如何缩放和移动密度曲线?

cool result but ugly hack

最佳答案

我建议制作两个图并将它们与 grid.arrange 结合起来。 :

p1 <- ggplot(data=mydf.wide,aes(x=value,y=var)) +
  geom_point(colour='red') +
  geom_smooth(method='lm') +
  facet_wrap(~variable,scale='free_x') +
  theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank(),
        plot.margin =       unit(c(1, 1, 0, 0.5), "lines"))

p2 <- ggplot(data=mydf.wide,aes(x=value,y=var)) +
  stat_density(aes(x=value,y=..scaled..),position='identity',geom='line') +
  facet_wrap(~variable,scale='free_x') + 
  theme(strip.background=element_blank(),
        strip.text=element_blank(),
        plot.margin =       unit(c(-1, 1, 0.5, 0.35), "lines"))

library(gridExtra)
grid.arrange(p1, p2, heights = c(2,1))

enter image description here

关于r - 使用 ggplot2 : Create faceted scatterplot with scaled and moved density,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604789/

相关文章:

r - ggplot2:如何更改图例的顺序

r - 使用ggplot2将构面标签中的新行和斜体组合

从 geom_tile 中删除空行

r - ggplot2 aes_string() 无法处理以数字开头或包含空格的名称

r - 使用 R 包分发半实时数据集有哪些方法?

r - 将具有 k 格式数字的因子列转换为数字而不丢失任何数据

r - 如何调整geom tile中的瓦片高度?

R - 组顺序/ggplot dodge 条形图的问题

r - 使用带有 scale_y_log10 的 geom_histogram 时如何抑制零

r - 如何使用 R 的 ggplot2 包更改条形图的颜色?