3
library(ggplot2)


 data <- 
  data.frame(
    group=factor(c("a","c","b","b","c","a")),
    x=c("A","B","C", "D","E","F"),
    y=c(3,2,10,11,4,5)) 

> data
  group x  y
1     a A  3
2     c B  2
3     b C 10
4     b D 11
5     c E  4
6     a F  5

#And plot this:
ggplot(data)+
  geom_bar(aes(x=x, y=y, fill=group, order=group),
           stat="identity",
           position="dodge")+
  coord_flip()

これは、因子レベルに従って x がプロットされた図を示します。 ここに画像の説明を入力

しかし、変数のカスタム順序に従って x を並べ替えgroup、同時にgroup、たとえば descending に従って並べ替えるにはどうすればよいでしょうかy。たとえば、最初に "c" (赤)、次に "a" (緑)、次に "b" (青) のグループをプロットする場合、x 軸 (x変数) のプロット順序は E、B、 F、A、D、C。これは、このSO の質問に似ている可能性があることに注意してください。

4

1 に答える 1

6

最初に、を使用せずにデータフレームをフォーマットする必要がありますfactor。次に、 x 列をとして定義する必要がありますが、順序は最小あたりfactorに依存します。必要なこの特定の順序は、引数で指定する必要があります。ygrouplevels

どうぞ:

data <- 
  data.frame(
    group=c("a","c","b","b","c","a"),
    x=c("A","B","C", "D","E","F"),
    y=c(3,2,10,11,4,5)) 

data$x = with(data, factor(x, levels=x[order(ave(y, group, FUN=min),y)]))

ggplot(data, aes(x, y, fill=group)) + 
  geom_bar(stat='identity', position='dodge') + 
  coord_flip()

ここに画像の説明を入力

于 2015-03-23T17:27:37.870 に答える