R 当我';我想用ggplot2绘制重叠密度图?

R 当我';我想用ggplot2绘制重叠密度图?,r,R,我想创建重叠密度图。我决定使用ggplot2 我的数据是数据帧格式的。 下面是它们的外观: Ge<-data.frame(Ge) dim(Ge) #[1] 100 1 Ge[1:4,] #[1] 6.005409 38.681342 102.079283 185.672611 dim(Tr) #[1] 100 1 Tr[1:4,] #[1] 12.8678547 1.3034715 1.1372413 0.7973491 但这是我得到的错误: Don't kn

我想创建重叠密度图。我决定使用ggplot2

我的数据是数据帧格式的。 下面是它们的外观:

Ge<-data.frame(Ge)
dim(Ge)
#[1] 100   1
Ge[1:4,]
#[1]   6.005409  38.681342 102.079283 185.672611
dim(Tr)
#[1] 100   1
Tr[1:4,]
#[1] 12.8678547  1.3034715  1.1372413  0.7973491
但这是我得到的错误:

    Don't know how to automatically pick scale for object of type data.frame. Defaulting to continuous
Error: stat_density requires the following missing aesthetics: x

有人能帮我解决这个问题吗?

在可能的情况下,您应该在ggplot中使用单个数据帧。这是语法背后的逻辑,但一开始并不直观。考虑到您的示例代码,
Tr
Ge
是因素,您在公共x轴上表示一组值

重塑2软件包有一个方便的工具,用于将单独的数据组合成适合ggplot打印的格式,
melt
。查看软件包文档,但请参阅下面的工作代码和示例输出

require(ggplot2)
require(reshape2)
Ge=runif(n=100)
Tr=runif(n=100)
data=data.frame(Ge,Tr)
names(data)=c('Ge','Tr')
data=melt(data,id.vars=NULL)
ggplot(data,aes(x=value,fill=variable))+geom_density(alpha=.4)

哈德利·威克姆的一本书非常详细地介绍了所有这些信息

更新 我更仔细地复制了OP的代码(偏离了最佳实践),仍然得到了一个功能图,尽管有一个警告

Ge=data.frame(runif(n=100))
Tr=data.frame(runif(n=120))

ggplot()+geom_density(aes(data=Ge,x=Ge[,1]),color='red')+
  geom_density(aes(data=Tr,x=Tr[,1]),color='blue')
不知道如何为类型的对象自动拾取比例 data.frame。默认为连续不知道如何自动 为data.frame类型的对象拾取比例。默认为连续


但是Ge和Tr的长度是如何不同的?你能用一个重复的例子来更新你的问题吗
Ge
Tr
是什么?您是否仅使用
Tr
然后仅使用
Ge
尝试绘图?这些测试是如何进行的?我更新了我的答案,测试了你的代码,它对我来说是有效的。也许您的数据帧存在一些问题。是否有任何值
NA
或与数值类型不同?尝试
summary(Ge)
summary(Tr)
。我检查过,没有NA,但值的格式是:3.848143e-01,…只测试绘图
Tr
,然后只测试
Ge
。让我知道它们是如何工作的。另外,我最初的post是否解决了您的问题?
x
是每个数据帧中列的名称吗?尝试名称
names(Ge)
names(Tr)
。在我的示例中,我只是直接引用了我想要的专栏,
Ge[,1]
,这很有效。
Ge=data.frame(runif(n=100))
Tr=data.frame(runif(n=120))

ggplot()+geom_density(aes(data=Ge,x=Ge[,1]),color='red')+
  geom_density(aes(data=Tr,x=Tr[,1]),color='blue')