我想在R中叠加几个密度图并知道有几种方法可以做到这一点,但是由于某种原因它们不适合我('sm'库不安装而且我' m noob足以不理解大部分代码)。我也尝试过plot和par,但是我想使用qplot,因为它有更多的配置选项。
我有以这种形式保存的数据
library(ggplot2)
x <- read.csv("clipboard", sep="\t", header=FALSE)
x
V1 V2 V3
1 34 23 24
2 32 12 32
我想创建3个重叠的图,其中V1,V2和V3的值使用灰色或灰色调来填充或使用点线或与图例类似的东西。你能帮助我吗?
谢谢!
答案 0 :(得分:45)
通常对于ggplot和多个变量,您需要从宽转换为长格式。我认为可以不用,但这就是包的工作方式
这是解决方案,我生成了一些数据(以不同点为中心的3个正态分布)。我也做了一些直方图和箱形图,以备你想要的那些。 alpha参数控制填充的透明度,如果使用颜色而不是填充,则只获得轮廓
x <- data.frame(v1=rnorm(100),v2=rnorm(100,1,1),v3=rnorm(100,0,2))
library(ggplot2);library(reshape2)
data<- melt(x)
ggplot(data,aes(x=value, fill=variable)) + geom_density(alpha=0.25)
ggplot(data,aes(x=value, fill=variable)) + geom_histogram(alpha=0.25)
ggplot(data,aes(x=variable, y=value, fill=variable)) + geom_boxplot()
答案 1 :(得分:6)
为了完整起见,基于因子叠加图的最基本方法是:
ggplot(data, aes(x=value)) + geom_density(aes(group=factor))
但正如@ user1617979所述,aes(color=factor)
和aes(fill=factor)
在实践中可能更有用。
答案 2 :(得分:0)
有些人问,如果发行版的长度不同,您是否可以这样做。答案是肯定的,只需使用列表而不是数据框即可。
library(ggplot2)
library(reshape2)
x <- list(v1=rnorm(100),v2=rnorm(50,1,1),v3=rnorm(75,0,2))
data<- melt(x)
ggplot(data,aes(x=value, fill=L1)) + geom_density(alpha=0.25)
ggplot(data,aes(x=value, fill=L1)) + geom_histogram(alpha=0.25)
ggplot(data,aes(x=L1, y=value, fill=L1)) + geom_boxplot()