我是一个完整的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")
我哪里出错了?
答案 0 :(得分:3)
这是绘图的另一种方法:
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