将2D条件分布(在第三维中)添加到R中的2D散点图

时间:2014-12-31 18:25:18

标签: r graphics 3d ggplot2 rgl

任何人都可以想到一种方法来向2D散点图添加第三维,该第三维包含Y | X = 120,Y | X = 140和Y | X = 160的不同分布?我试图将初学者的理论标准法线包括在内(但最终还是要包括经验分布)。

供参考,这里是ggplot2描绘2D散点图

df <- data.frame(x = c(replicate(5, 120), replicate(7, 140), replicate(6, 160)),
                 y = c(c(79, 84, 90, 94, 98), c(80, 93, 95, 103, 108, 113, 115),
                       c(102, 107, 110, 116, 118, 125)))

library(dplyr)
df <- df %>% group_by(x) %>% mutate(gp.mn = mean(y))

library(ggplot2)
( ggplot(df, aes(x = x)) + geom_point(aes(y = y)) + geom_line(aes(y = gp.mn)))

scatter

我基本上试图复制我在.tpx中创建的图像:

enter image description here

我没有绑定任何特定的3D软件包,但plot3Drgl可用于生成类似于上图的2D图:

library(plot3Drgl)
scatter2Drgl(df$x, df$y, xlab = "x", ylab = "y")
scatter2Drgl(df$x, df$gp.mn, type = "l", add = TRUE, lwd = 4)

我希望将2D绘图用作伪3D rgl绘图的构建块,然而,将分布合并到第三维(rgl或其他)是我的意思。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

也许这会有所帮助。 (我从来没有对他的ggplot范例感到满意,所以我展示了一个有人可以翻译的基本图形版本。)我还认为添加组意味着对df-object感到困惑,所以我&#39; m仅使用oritignal df。

 aggregate(y~x,df, FUN=function(y) c(mn=mean(y),sd=sd(y))  )
#--------
    x       y.mn       y.sd
1 120  89.000000   7.615773
2 140 101.000000  12.476645
3 160 113.000000   8.294577
#----------
png(); plot(df, xlim=c(110,170) )
lines( x= 120 - 100*dnorm(seq(89-2*7.6,89+2+7.6,length=25), 89, 7.6), 
       y= seq(89-2*7.6,89+2+7.6,length=25) )
lines( x=140 - 100*dnorm(seq(101-2*12.5,101+2*12.5,length=25), 101, 12.5), 
       y- seq(89-2*7.6,101+2+12.5,length=25) );dev.off()

enter image description here

基本策略是反转参数顺序(并通过乘以绘制点的比例因子来扩展分布值),然后&#34;翻译&#34;这些分布使它们与它们的衍生点相邻。