如何在 R 中使用 geom_errorbar() 反转误差线出现的顺序?

Dav*_*ave 3 plot r ggplot2

我有以下示例图:

\n\n
test <- data.frame("Factor" = as.factor(c("O", "C", "A")), \n                       b = c(0.18, .34, .65, -.13, .38, .26), \n                       lower95 = c(-.1, .09, .34, -.52, .10, -.02), \n                       upper95 = c(.48, .58, .98, .26, .67, .56), \n                       group = factor(c("Experiment 1","Experiment 2")))\n\ntest$Factor <- factor(test$Factor, as.character(test$Factor))\ntest$group <- factor(test$group, as.character(test$group))\n\nggplot(test, aes(Factor, b, colour = group)) +\n  geom_errorbar(aes(ymin = lower95, ymax = upper95), \n            size = 1,\n            width = .5, \n            position = \'dodge\') +\n  geom_hline(yintercept = 0) +\n  ylim(-1.25, 1.25) +\n  coord_flip() +\n  theme_bw() + \n  ggtitle("Title") +\n  theme(\naxis.text=element_text(size = 20), \naxis.title=element_text(size = 18),\nplot.title = element_text(size = 20, face = "bold"),\naxis.text.y=element_text(size = 12)\n  )\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您将看到的,误差线以与图例中相反的顺序(从上到下)显示。我希望实验 1 误差线出现在实验 2 误差线上方。

\n\n

我努力了

\n\n
ggplot(test, aes(Factor, b, colour = forcats::fct_rev(groups)\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这会颠倒图例中组标签的顺序,而不是图例\xe2\x80\x93 中颜色的顺序,这才是可行的。我还尝试颠倒在数据框中输入它们的顺序,但这并不能解决问题。

\n\n

我将不胜感激一些帮助!

\n

aos*_*ith 5

重构将改变绘图的顺序,但是,正如您所看到的,也会改变图例的顺序。除了反转 的级别之外group,您还可以反转图例与reverse参数中的显示顺序guide_legend

ggplot(test, aes(Factor, b, colour = forcats::fct_rev(group))) +
     geom_errorbar(aes(ymin = lower95, ymax = upper95), 
                   size = 1,
                   width = .5, 
                   position = 'dodge') +
     geom_hline(yintercept = 0) +
     ylim(-1.25, 1.25) +
     coord_flip() +
     theme_bw() + 
     ggtitle("Title") +
     theme(
          axis.text=element_text(size = 20), 
          axis.title=element_text(size = 18),
          plot.title = element_text(size = 20, face = "bold"),
          axis.text.y=element_text(size = 12)
     ) +
     guides(color = guide_legend(reverse = TRUE) )
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果您正在使用scale_color_discretescale_color_manual控制其他比例元素(例如图例名称),则可以使用guide_legendthere 而不是 via guides

+
scale_color_discrete(name = "Experiment", guide = guide_legend(reverse = TRUE) )
Run Code Online (Sandbox Code Playgroud)