[英]How do I combine multiple probability density functions into one ggplot?
我是一个完整的R菜鸟,我正在尝试将多个beta分布组合成一个ggplot。 这是我到目前为止所得到的......
#to create a continuous probability function
x=seq(0,1,.01)
q=dbeta(x,2.2,1.7)
z=dbeta(x,3.3,1.2)
df=data.frame(x,q,z)
t=ggplot(df, aes(x)) + # basic graphical object
geom_line(aes(y=q), colour="red") + # first layer
geom_line(aes(y=z), colour="green")+ # second layer
xlab("X value")+ylab("PDF")+
ggtitle("Beta Probability Distribution Functions")
我哪里做错了?
这是绘图的另一种方法:
library(tidyr)
library(ggplot2)
set.seed(1492) # reproducible
x <- seq(0, 1, .01)
q <- dbeta(x, 2.2, 1.7)
z <- dbeta(x, 3.3, 1.2)
df <- data.frame(x, q, z)
将它变成一个长数据框,这样我们就可以使用ggplot2 w / r / t美学的一些固有属性。
df <- gather(df, func, val, -x)
现在,我们可以使用美学映射与硬编码值并执行多个geom_line()
。
gg <- ggplot(df, aes(x=x, y=val, group=func))
gg <- gg + geom_line(aes(color=func))
稍微收紧y轴限制
gg <- gg + scale_y_continuous(expand=c(0, 0))
我们现在可以实际获得一个图例(您也可以删除它并使用geom_text()
手动标记这些行)
gg <- gg + scale_color_manual(name="Beta params",
values=c("#b2182b", "#4393c3"),
labels=c("α=2.2, β=1.7", "α=3.3, β=1.2"))
将多个标签语句合并为一个。
gg <- gg + labs(x="x value", y="PDF",
title="Beta Probability Distribution Functions")
删除一些图表垃圾。
gg <- gg + theme_bw()
gg <- gg + theme(panel.border=element_blank())
gg <- gg + theme(axis.line=element_line(size=0.15, color="#2b2b2b"))
gg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.