我想创建重叠密度图。我决定使用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
这是我创建剧情的代码:
library(ggplot2)
ggplot() + geom_density(aes(x=x), colour="red", data=Tr) +
geom_density(aes(x=x), colour="blue", data=Ge)
但这是我得到的错误:
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
有人会帮我解决这个问题吗?
答案 0 :(得分:0)
您应该使用ggplot尽可能使用单个数据框。这是语法背后的逻辑,但最初是不直观的。考虑到您的示例代码,Tr
和Ge
是因素,并且您在一个公共x轴上有一组值。
reshape2包有一个方便的工具,可以将单独的数据组合成适合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)
Hadley Wickham写了一本书,详细介绍了所有这些信息。 Amazon link
<强>更新强> 我已经更密切地复制了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类型的对象选择比例。默认为连续