【发布时间】:2018-09-26 02:21:21
【问题描述】:
我遇到了一个烦人的问题,我无法找到具体的解决方案。我正在尝试创建一个水平分组条形图;我想要的只是获取标准的垂直条形图并将其向右旋转 90 度。当我使用 coord_flip 时,它会将绘图向右旋转,但会翻转(反转)每组 内 数据的顺序。这是一个例子:
library("ggplot2")
df <- data.frame(Group = c("A","A","A","B","B","B","C","C","C"),
Sub = c("1","2","3","1","2","3","1","2","3"),
Score = c(1,2,3,1,2,3,1,2,3))
df$Group <- factor(df$Group,
levels = c("A","B","C"),
labels = c("A","B","C"),
ordered = TRUE)
df$Sub <- factor(df$Sub,
levels = c("1","2","3"),
labels = c("1","2","3"),
ordered = TRUE)
ggplot(data = df, aes(x = Group, y = Score, fill = Sub)) +
geom_bar(stat="identity", position=position_dodge()) +
coord_flip() +
scale_x_discrete(limits = rev(levels(df$Group)))
我可以使用以下方法按正确的顺序排列组:
scale_x_discrete(limits = rev(levels(df$Group)))
但是,我无法让每个组内 的顺序正确。图例和数据是相反的,在这种情况下,我想改变绘制数据的顺序,而不是图例的顺序。
我发现您可以通过将条形图的位置闪避设置为 -.9 来解决此问题,如下所示:
geom_bar(stat="identity", position=position_dodge(-.9))
鉴于我的分组变量是字符串,我不确定here 提出的解决方案是否可行。
任何帮助将不胜感激!
【问题讨论】: