我在5年中对同一个小组(100名学生)进行了智商测试。 喜欢:
2005年,杰克的智商为100,艾米的智商为99,约翰...
2006年,杰克的智商为105,艾米的智商为95,约翰...
...
我想估计不同年份的智商密度。并在一张图中绘制不同年份的密度线。这是一些数据示例。
year2005<-rnorm(100,100,2)
year2006<-rnorm(100,98,1)
year2006<-rnorm(100,101,4)
上面是2D图表。很难理解几年之间的趋势,因为我必须知道红色是2016年,黑色是2015年。3D并不困难,这就是我坚持使用3D的原因
答案 0 :(得分:1)
您是否有任何理由想要制作难以阅读的3D图而不是类似的东西?
library("ggplot2")
n <- 100
year2005<-rnorm(n,100,2)
year2006<-rnorm(n,98,1)
year2007<-rnorm(n,101,4)
dt <- data.frame(year = rep(c("2005", "2006", "2007"), each = n),
value = c(year2005, year2006, year2007))
ggplot(dt, aes(value, fill = year, colour = year)) +
geom_density(alpha = 0.1)
即使您坚持显示的3D图,您如何建议在年份之间进行插值?
编辑
Here是一个非常相关的堆栈溢出文章。我知道这不是3D,就像您的要求一样。但是,为此,您仍然需要考虑如何在年份之间进行插值(在您的情况下,这似乎是一个绝对变量)。
答案 1 :(得分:1)
感谢@Anders Ellern Bilgrau提供的网站,他/她建议我从该网站中学到有关 ggridges
的知识我用 ggridges 完成工作。可以从
获得帮助https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html
library(devtools)
install_github("clauswilke/ggridges")
ggplot(dt, aes(x = value, y = year, fill =0.5-abs(0.5-..ecdf..))) +
stat_density_ridges(geom="density_ridges_gradient",scale=1, calc_ecdf=TRUE,
jittered_points = T) +
scale_fill_viridis(name = "Tail Probability", direction = -1)
+theme_minimal()+
theme(plot.title=element_text(size=17,color="black",face="bold",hjust=0.5),
axis.title.y = element_blank())+
labs(x="...")+
scale_y_discrete(expand = c(0.01, 0)) +
scale_x_continuous(breaks=seq(0,240,40),expand = c(0, 0))
尽管它不能完全满足我的要求,但可以帮助分析概率形状的变化。