【发布时间】:2020-05-02 11:53:53
【问题描述】:
我有一个包含 3 个分布的数据集,每个分布有 100 个观察值,我想使用 ggplot 后验图来绘制这些分布。
数据:
Name Value
A1 1
A1 1.2
A1 0.5
A2 5
A2 3
A2 -1
A3 5
A3 2
A3 1
问题:
我无法按平均值对值进行排序,图中的预期结果应该是“A2,A3,A1”。
尝试的解决方案:
ggplot(value1, aes(reorder(mean(value)), x = value, y = name))+
geom_posterior() +
xlab("value") + theme_bw()
带数据的完整代码:
library("tidyverse")
library("ggdistribute") #plot geom_posterior
value1 <- rnorm(n=100, mean=1, sd=1) %>% as.data.frame()
value2 <- rnorm(n=100, mean=3, sd=1) %>% as.data.frame()
value3 <- rnorm(n=100, mean=1, sd=2) %>% as.data.frame()
value1$name <- "A1"
value2$name <- "A2"
value3$name <- "A3"
value1 <- rbind(value1,value2,value3)
colnames(value1) <- c("value","name")
ggplot(value1, aes(reorder(mean(value)), x = value, y = name))+
geom_posterior() +
xlab("value") + theme_bw()
【问题讨论】:
-
试试
ggplot(value1, aes(x = value, y = reorder(name, value, mean))) -
@Tjebo 它的库(“ggdistribute”),我编辑了这个问题。
-
@Ben 这行得通,如果将评论转换为答案,我可以接受你的答案