カウントの代わりに % を表示する ggplot に関するこの投稿を読みましたが、いくつかの因子変数で構成される融解したデータフレームがある場合、それを機能させることができません。
これにより、バーがまだカウントを表示しているプロットが得られ、目的の % ではありません。
# Data
head(sabat)
V1 V2 V3 V4 V5 V6 V7 V8
1 2 2 2 2 2 2 1 2
2 2 1 2 1 2 1 1 2
3 2 2 2 2 2 2 2 1
4 1 2 2 2 2 2 2 2
5 2 1 2 2 2 2 1 2
6 2 1 2 1 2 1 1 2
# melt data.frame
sabat.m <- melt(sabat)
# set 2 to NA because as only want to plot the yes answers (1=yes, 2=no)
sabat.m$value[sabat.m$value==2] <- NA
sabat.m <- na.omit(sabat.m)
# Factor it
sabat.m$value <- factor(sabat.m$value)
#structure of the melted data.frame
str(sabat.m)
data.frame': 1020 obs. of 2 variables:
$ variable: Factor w/ 8 levels "V1","V2","V3",..: 1 1 1 1 1 1 1 1 1 1 ...
$ value : Factor w/ 1 level "1": 1 1 1 1 1 1 1 1 1 1 ...
- attr(*, "na.action")=Class 'omit' Named int [1:2412] 1 2 3 5 6 7 8 10 11 12 ...
.. ..- attr(*, "names")= chr [1:2412] "1" "2" "3" "5" ...
# Plot it
p <- ggplot(sabat.m, aes(x = variable)) +
geom_bar(aes(y = (..count..)/sum(..count..)), binwidth = 25) +
scale_y_continuous(labels = percent_format()) +
coord_flip()
p
前もって感謝します