在R中为三种不同的后验分布添加带有ggplot的标签[重复]
Posted
技术标签:
【中文标题】在R中为三种不同的后验分布添加带有ggplot的标签[重复]【英文标题】:Add a label with ggplot in R for three different posterior distributions [duplicate] 【发布时间】:2021-10-31 10:11:33 【问题描述】:我在同一个图上绘制了三个不同的后验分布,我想添加一个标签来阐明后验分布 1、后验分布 2 和后验分布 3。我尝试使用 '''scale_colour_manual''' 但确实如此不行。你能帮我个忙吗?真的很感激。
x <- seq(-10, 15, 0.01)
# Prior Distribution
w1 <- 0.6; w2 <- 0.2; w3 <- 0.2
# p(x)
d1 <- dnorm(x, mean=4, sd=2)
d2 <- dnorm(x, mean=6, sd=3)
d3 <- dnorm(x, mean=5, sd=2)
p_x <- w1*d1+w2*d2+w3*d3
# Posterior distribution
p1 <- d1*w1/p_x
p2 <- d2*w2/p_x
p3 <- d3*w3/p_x
df <- data.frame(x, p1, p2, p3)
# Plot with ggplot
library(ggplot2)
ggplot(df, aes(x)) +
geom_line(aes(y=p1), color='red')+
geom_line(aes(y=p2), color='blue')+
geom_line(aes(y=p3), color='black')+
ylab('the Posterior Distribution')+
scale_colour_manual("Groups", values = c("red", "blue", "black"))
【问题讨论】:
【参考方案1】:解决方案 1
您可以在aes()
中使用col
参数和每个分布的名称,并在scale_colour_manual
中定义颜色
ggplot(df, aes(x)) +
geom_line(aes(y=p1,col = "Dist. 1"))+
geom_line(aes(y=p2,col = "Dist. 2"))+
geom_line(aes(y=p3,col = "Dist. 3"))+
ylab('the Posterior Distribution')+
scale_colour_manual("Groups", values = c("red", "blue", "black"))
解决方案 2
您可以旋转您的 data.frame,为值创建一列,为分布创建另一列
df %>%
pivot_longer(cols = -x) %>%
ggplot(aes(x,value,col = name)) +
geom_line()+
ylab('the Posterior Distribution')+
scale_colour_manual("Groups", values = c("red", "blue", "black"))
【讨论】:
以上是关于在R中为三种不同的后验分布添加带有ggplot的标签[重复]的主要内容,如果未能解决你的问题,请参考以下文章