在ggplot2中使用coord_flip()之后更改条形图中的条形顺序

时间:2019-05-15 14:25:34

标签: r ggplot2

我正在尝试绘制条形图,在x轴上显示研究名称,在y轴上显示总分。为了使图形更易读,我翻转了坐标系,以使研究名称现在显示在左侧。 但是,现在我不能再更改条形的顺序了。我希望它是按字母顺序从a到z的顺序排列,而不是相反(在我的情节中就是这种情况)。

如下图所示,条形图以Wright(2018)开始,以Alford(2012)结尾。我想反过来。

enter image description here 代码如下:

 data.quality %>%
  ggplot(aes(x = study, y = score)) + 
  geom_bar(stat = "identity", fill = "#66c2a5") +
  coord_flip() +
  scale_y_continuous(name = "Total quality score", limits = c(0, 7),
                     breaks = 0:7) +
  scale_x_discrete(name = element_blank()) +
  theme(axis.ticks.y = element_blank())

我已经尝试使用reorder():

ggplot(aes(x = study, y = reorder(score, -study)))

但这不起作用,因为 study 是一个字符串。

谢谢你, 马赛厄斯

1 个答案:

答案 0 :(得分:1)

您是否尝试过将study变成一个因子并在绘制它之前反转其顺序?我没有可重现的示例对此进行测试,但是它可能有用,因为coord_flip颠倒了(现在已经颠倒了)顺序。

library(tidyverse)

data.quality %>%
  mutate(study = fct_rev(study)) %>% 
  ggplot(aes(x = study, y = score)) + 
  geom_bar(stat = "identity", fill = "#66c2a5") +
  coord_flip() +
  scale_y_continuous(name = "Total quality score", limits = c(0, 7),
                     breaks = 0:7) +
  scale_x_discrete(name = element_blank()) +
  theme(axis.ticks.y = element_blank())