2017-09-28 12 views
1

変数のレベルによって昇順に棒グラフを並べ替える必要があります。他の投稿herehereは機能しません。ここで他の変数でグループ化された変数のレベルをggplot2で昇順にプロットします。

は私が達成したいどのような例データ

x <- c(rep(letters[1:2], each = 6)) 
y <- c(rep(letters[3:8], times = 2)) 
z <- c(2, 4, 7, 5, 11, 8, 9, 2, 3, 4, 10, 11) 
dat <- data.frame(x,y,z) 

で昇順にxでグループ化されたyのレベルのバーグラフをプロットすることです。

以下は、yを昇順に並べます。

library(tidyverse)  
dat2 <- dat %>% group_by(y) %>% 
    arrange(x, z) %>% 
    ungroup() %>% 
    mutate(y = reorder(y, z)) 
dat2 

しかし、結果として得られるプロットは私が期待していたものではありません。

ggplot(dat2, aes(y,z)) + 
    geom_bar(stat = "identity") + 
    facet_wrap(~x, scales = "free") 

どのように私はxによってzの昇順でyのレベルを手配することができますか?

答えて

1

バーが各ファセット内で増加することが予想される場合は、異なるファセットに対して同じ値のyを別の位置に配置する必要があります。代わりにこれを試してみてください:

dat3 <- dat %>% 
    mutate(x.y = paste(x, y, sep = ".")) %>% 
    mutate(x.y = factor(x.y, levels = x.y[order(z)])) 
# this creates a new variable that combines x & y; different facets 
# simply use different subsets of values from this variable 

ggplot(dat3, aes(x.y,z)) + 
    geom_bar(stat = "identity") + 
    scale_x_discrete(name = "y", breaks = dat3$x.y, labels = dat3$y) + 
    facet_wrap(~x, scales = "free") 

plot

+0

うわー。今私はそれを見て、それは多くの意味があります。そのような素敵なトリック。ありがとうございました! – hpesoj626

関連する問題