我使用它后面的R代码生成了以下图:

ggplot(lengths, aes(length, fill = library)) + geom_density(alpha = 0.2) + coord_cartesian(xlim = c(0, 60000))
Run Code Online (Sandbox Code Playgroud)
现在我想使情节更漂亮一点:
我怎样才能做到这一点?
更新
以回应詹姆斯:

Ben*_*ker 11
怎么样:
(首先创建一个可重现的例子)
set.seed(1001)
lengths <- data.frame(length=c(rgamma(1000,shape=10,scale=500),
10000+rgamma(1000,shape=5,scale=700),
rnorm(500,mean=30000,sd=2000)),
library=factor(rep(2:1,c(2000,500))))
Run Code Online (Sandbox Code Playgroud)
(可爱的东西找到高峰位置和高度)
peakfun <- function(x) {
d <- density(x$length)
peaks <- which(diff(sign(diff(d$y)))==-2)
data.frame(x=d$x[peaks],y=d$y[peaks])
}
peakdat <- ddply(lengths,.(library),peakfun)
peakdat <- peakdat[-1,] ## drop spurious peak
Run Code Online (Sandbox Code Playgroud)
(画出情节)
library(ggplot2)
ggplot(lengths, aes(length, fill = library)) +
geom_density(alpha = 0.2) +
scale_x_continuous(limits = c(0,60000),
breaks = seq(0,60000,by=5000))+
geom_text(data=peakdat,aes(x=x,y=y,label=round(x)),vjust=1)
Run Code Online (Sandbox Code Playgroud)
你可能想稍微调整一下标签的垂直高度
1 : + scale_x_continuous(breaks=rep(5000,12)).
你也可以xlim在这里使用声明limits,例如,
+ scale_x_continuous(breaks=rep(5000,12),limits=c(0,60000))
Run Code Online (Sandbox Code Playgroud)
2:对于您可以使用的标签annotate()或geom_text().见这个职位的例子.你必须自己计算这个值.
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |