【发布时间】:2021-08-17 18:32:33
【问题描述】:
我正在尝试创建一个绘制排名的条形图,其中较低的值更好。我希望较大的条形对应于较小的值,因此数据中的“最佳”组会获得更多的视觉权重。
代表:
dat = data.frame("Group" = c(rep("Best",50),
rep("Middle",50),
rep("Worst",50)
),
"Rank" = c(rnorm(n = 50, mean = 1.5, sd = 0.5),
rnorm(n = 50, mean = 2.5, sd = 0.5),
rnorm(n = 50, mean = 3.5, sd = 0.5)
)
)
tibdat = as_tibble(dat) %>%
group_by(Group) %>%
summarise(Mean_Rank = mean(Rank,na.rm=T))
# creates simple rightside up bar graph
ggplot(data = tibdat, mapping = aes(Group, Mean_Rank, fill = Group)) +
geom_col() +
scale_y_continuous(breaks = c(1:4), limits = c(1,4), oob = scales::squish)
# my attempt below, simply reversing the breaks and limits
ggplot(data = tibdat, mapping = aes(Group, Mean_Rank, fill = Group)) +
geom_col() +
scale_y_continuous(breaks = c(4:1), limits = c(4,1), oob = scales::squish)
最后的图形代码确实成功翻转了轴,但是数据消失了(没有绘制条形图)。
请注意,我确实不希望图表源自顶部,这 scale_y_reverse 可以实现。我希望这些条从底部开始,位于 y = 4 行(或以下)。
这是如何实现的?
编辑:在下面添加了图片以显示有效但错误的原始条形图。
【问题讨论】: