R ggplot特定的条形顺序

时间:2015-07-24 14:59:31

标签: r ggplot2 bar-chart

所以,我正在使用ggplot在R中做几个降序排序的条形图。这些图中的每一个都包含一个名为“其他”的栏,它应该始终是最后一栏。如何最佳地实现这一目标?更一般地说:是否有可能选择一个条形图条并将其移动到最后位置而无需手动更改所有级别。

非常感谢, 克里斯

1 个答案:

答案 0 :(得分:1)

诀窍是使用因子,如下

library(ggplot2) # for plots
# dummy data
dat <- data.frame(
  letters = c("A","B","Other","X","Y","Z"),
  probs = sample(runif(6)*10,6)
)

# not what we want
ggplot(dat, aes(letters, probs)) + geom_bar(stat = "identity") 

# magic happens here
# factor, and push Other to end of levels using c(others, other)
dat$letters <- factor(
  dat$letters, 
  levels = c(
    levels(dat$letters)[!levels(dat$letters) == "Other"], 
    "Other") 
  )

ggplot(dat, aes(letters, probs)) + geom_bar(stat = "identity")

如果您使用+ coord_flip(),请使用levels = rev(c(...))进行直观排序

dat$letters <- factor(
  dat$letters, 
  levels = rev(c(
    levels(dat$letters)[!levels(dat$letters) == "Other"], 
    "Other")) 
  )

ggplot(dat, aes(letters, probs)) + geom_bar(stat = "identity") + coord_flip()