ggplot2:叠加密度图R

Ale*_*ngu 32 plot r ggplot2

我想在R中叠加一些密度图并知道有几种方法可以做到这一点,但是由于某种原因它们不适合我('sm'库不安装而且我已经足够了不了解大部分代码).我也尝试过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
Run Code Online (Sandbox Code Playgroud)

我想创建3个重叠的图,其中V1,V2和V3的值使用灰色或灰色调来填充或使用点线或与图例类似的东西.你们能帮助我吗?

谢谢!

use*_*979 54

通常对于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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


ant*_*ine 6

为了完整起见,基于因子叠加图的最基本方法是:

ggplot(data, aes(x=value)) + geom_density(aes(group=factor))
Run Code Online (Sandbox Code Playgroud)

但正如@ user1617979提到的,aes(color=factor)并且aes(fill=factor)很可能在实践中更加有用.由因子覆盖的三个密度图