R - 传奇ggplot的顺序

时间:2015-08-04 11:06:59

标签: r ggplot2 legend stacked

我有以下数据框:

Author<-c("University","Office", "School","University","Office", "School","University","Office", "School")
Typ<-c("Text", "Text", "Text","Data", "Data","Data",  "List", "List", "List")
Number<-c("3","1","6","4","4","2","8","1","1")
df<-data.frame(Typ,Author,Number)

如果我申请:

ggplot(df, aes(x=Author, y=Number, fill=Typ)) +
  geom_bar(stat='identity') + coord_flip()

然后我得到一个堆积条形图,其中条形按日期框架顺序排列,即TextDataList,但图例按字母顺序排列。是否存在任何(非暴力,即手动)选项,以便我也可以在df的“给定”顺序中重新排列图例,即TextData,{{1} }?

(只是为了澄清 - 我有一堆像这样的数据框,在矢量“Typ”(在每个数据框中也不同)有更多的条目,其顺序不应该改变的意义上也更大。也显示在图例中。我写了一个例程,它绘制了所有这些数据框,因此我无法手动更改图例 - 我真的在寻找一个常规友好的解决方案)

1 个答案:

答案 0 :(得分:3)

您可以根据它们在data.frame中的显示顺序自动设置级别:

df$Typ <- factor(df$Typ, levels = unique(df$Typ))
ggplot(df, aes(x=Author, y=Number, fill=Typ)) +
        geom_bar(stat='identity') + coord_flip()

通过这种方式,您可以根据factor中的顺序更改df$Typ的顺序:

enter image description here