多组数据的3D密度图(带回归线)

4

我想创建类似于这样的图形:

Nether et al

在这里,我们有两个变量X = midyear和Y = yearend。我想为每个X级别的Y创建密度图。

我已经可以做到这一点,但它看起来不够美观,尤其是图形和线条的角度。是否有任何想法可以实现这种扭曲或其他可以实现此效果的软件包。

set.seed(1234)
m50 <- rnorm(10000, 51, 5)
d50 <- hist(m50, breaks = 100)$density
md50 <- hist(m50, breaks = 100)$mids

m70 <- rnorm(10000, 73, 5)
d70 <- hist(m70, breaks = 100)$density 
md70 <- hist(m70, breaks = 100)$mids

m90 <- rnorm(10000, 90,5)
d90 <- hist(m90, breaks = 100)$density 
md90 <- hist(m90, breaks = 100)$mids

density = c(d50, d70, d90)
yearend = c(md50, md70, md90)
midyear = c(rep(50, length(d50)), rep(70, length(d70)), rep(90, length(d90)))

df <- cbind(midyear, yearend,  density)
require(scatterplot3d)
s3d <- scatterplot3d(df, type = "h", color = "blue",
       angle = 80, scale.y = 0.7, xlim = c(40, 100), 
   zlim = c(0,0.2), pch = ".", main = "Adding elements")

进入图像描述

编辑: 使用rgl包

require(rgl)
s3d <- plot3d(df, type = "h", 
                     angle = 80, scale.y = 0.7, xlim = c(40, 100), 
                     zlim = c(0,0.15), pch = ".", main = "Adding elements")

enter image description here


1
你尝试过在rgl包中使用plot3d(...)吗? - jlhoward
1
这篇博客文章似乎非常相关。 - Gregor Thomas
1个回答

2

如果您想展示分布情况而不带有视觉失真,建议使用二维图表。例如,下面的代码将回归线叠加在小提琴图上,这样您就可以在二维图表上同时获得回归线和密度。以下代码展示了对数据进行线性和二次多项式拟合的结果:

library(ggplot2)

# Fake data
set.seed(19)
dat = data.frame(yearend=c(rnorm(10000, 51, 6), 
                           rnorm(10000, 60, 5), 
                           rnorm(10000, 75, 5), 
                           rnorm(10000, 85, 4)),
                 midyear = c(rep(51,10000), rep(58,10000), 
                             rep(70,10000), rep(90,10000)))

ggplot(dat, aes(midyear, yearend)) +
  geom_violin(aes(group=midyear)) +
  stat_summary(fun.y=mean, geom="point", colour="red", size=3) +
  geom_smooth(method="lm", se=FALSE) +
  geom_smooth(method="lm", se=FALSE, formula=y~poly(x,2), 
              colour="red", lty=2)

enter image description here


感谢您提供了一个很好的替代想法。我也考虑过使用箱线图,但最终选择了正态曲线,因为它在视觉上更具吸引力(真实的正态曲线)来进行解释。 - jon
2
吸引人,没错。但是由于透视和扭曲,它在视觉上很令人困惑。像这个答案中的小提琴图就比倾斜和旋转的单个分布更好地呈现了你的数据。 - Terry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接