2016-04-22 19 views
0

私はbordartをcoord_flip()でひっくり返すとき、バーグラフを並べ替える必要がありますが、その方法はわかりません。 hereという解決策は、私のデータでは機能していないようです(または、まだわかりません)。ggplot2バーグラフのバーの順序を変更するにはどうすればよいですか?

これは私がするつもりの例です:

library(ggplot2) 

df <- structure(list(vars = c("7. var", "7. var", "7. var", "7. var", 
"1. var", "1. var", "1. var", "1. var", "8. var", "8. var", "8. var", 
"8. var", "4. var", "4. var", "4. var", "4. var"), percentage = c(37, 
22, 41, 1, 4, 12, 49, 35, 13, 34, 30, 24, 1, 11, 32, 56), score = structure(c(1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("1", 
"2", "3", "4"), class = "factor")), .Names = c("vars", "percentage", 
"score"), row.names = c(NA, 16L), class = "data.frame") 

ggplot(df, aes(x = vars, y = percentage, fill = score)) + 
    geom_bar(stat = 'identity', position = 'fill')+ 
    coord_flip() 

あなたが最初のバーグラフ名は8で始まり、最後の1が1で始まる見ることができるように。これは私が意図したものではありません。これは正しい順序です:1. var、4. var、7. var 8. var。

誰でもこれを行う方法を知っていますか? VARS列をファクタリング

答えて

1

はあなたのバーの順序を逆にしたい場合は、あなたが考慮して、要因の順番を逆にするためにそれらを変換することができます私のため

library(ggplot2) 

df <- structure(list(vars = c("7. var", "7. var", "7. var", "7. var", 
"1. var", "1. var", "1. var", "1. var", "8. var", "8. var", "8. var", 
"8. var", "4. var", "4. var", "4. var", "4. var"), percentage = c(37, 
22, 41, 1, 4, 12, 49, 35, 13, 34, 30, 24, 1, 11, 32, 56), score = structure(c(1L, 
2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), .Label = c("1", 
"2", "3", "4"), class = "factor")), .Names = c("vars", "percentage", 
"score"), row.names = c(NA, 16L), class = "data.frame") 

df$vars <- factor(df$vars,levels=unique(sort(df$vars,decreasing=TRUE))) 

ggplot(df, aes(x = vars, y = percentage, fill = score)) + 
    geom_bar(stat = 'identity', position = 'fill')+ 
    coord_flip() 
1

に動作します。

df$vars <- as.factor(df$vars) 
df$vars <- factor(df$vars, levels = rev(levels(df$vars))) 

ggplot(df, aes(x = vars, y = percentage, fill = score)) + 
geom_bar(stat = 'identity', position = 'fill') + 
coord_flip() 

これはあなたが探しているものですか?

関連する問題