繁体   English   中英

如何将多个概率密度函数组合到一个ggplot中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM