R 2基

2017-04-20 10 views
1
> dput(df_male) 
structure(list(Question = structure(c(1L, 2L, 3L, 1L, 2L, 3L), .Label = c("Q1", 
"Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8"), class = "factor"), 
    Response = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("No", 
    "Yes"), class = "factor"), Proportion = c(0.569230769230769, 
    0.569230769230769, 0.492307692307692, 0.430769230769231, 
    0.430769230769231, 0.507692307692308)), .Names = c("Question", 
"Response", "Proportion"), row.names = c(1L, 2L, 3L, 9L, 10L, 
11L), class = "data.frame") 

> dput(df_female) 
structure(list(Question = structure(c(1L, 2L, 3L, 1L, 2L, 3L), .Label = c("Q1", 
"Q2", "Q3", "Q4", "Q5", "Q6", "Q7", "Q8"), class = "factor"), 
    Response = structure(c(1L, 1L, 1L, 2L, 2L, 2L), .Label = c("No", 
    "Yes"), class = "factor"), Proportion = c(0.603092783505155, 
    0.65979381443299, 0.54639175257732, 0.396907216494845, 0.34020618556701, 
    0.45360824742268)), .Names = c("Question", "Response", "Proportion" 
), row.names = c(1L, 2L, 3L, 9L, 10L, 11L), class = "data.frame") 

ためggplot barplot I 3つの質問への応答のそれらの割合で2つのデータフレーム(各性別について1つ)を有します。R 2基

> df_male 
    Question Response Proportion 
1  Q1  No 0.5692308 
2  Q2  No 0.5692308 
3  Q3  No 0.4923077 
9  Q1  Yes 0.4307692 
10  Q2  Yes 0.4307692 
11  Q3  Yes 0.5076923 
> df_female 
    Question Response Proportion 
1  Q1  No 0.6030928 
2  Q2  No 0.6597938 
3  Q3  No 0.5463918 
9  Q1  Yes 0.3969072 
10  Q2  Yes 0.3402062 
11  Q3  Yes 0.4536082 

私はこれを視覚化したいので、私はggplotセグメント化されたバープロットを使用します。

ggplot(df_male, aes(x = Question, y = Proportion)) + 
    geom_bar(aes(fill = Response), stat = "identity") + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.25)) + # Rotate tick mark labels 
    guides(fill = guide_legend(reverse = TRUE)) + ggtitle("Male") + theme(plot.title = element_text(hjust=0.5)) 

ggplot(df_female, aes(x = Question, y = Proportion)) + 
    geom_bar(aes(fill = Response), stat = "identity") + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.25)) + # Rotate tick mark labels 
    guides(fill = guide_legend(reverse = TRUE)) + ggtitle("Female") + theme(plot.title = element_text(hjust=0.5)) 

enter image description here enter image description here

これはちょうど1プロットに2つのプロットを結合する方法ですか?すなわち、同じプロットの2つの異なるグループについて、これら3つの質問の割合を視覚化する方法を探したいと思います。

答えて

0

genderquestionの間でinteractionを使用すると、x軸にデータを積み重ねるのはどうですか?

また
df <- rbind(cbind(df_male,gender="M"), cbind(df_female, gender = "F")) 

ggplot(df, aes(x = interaction(Question,gender), y = Proportion)) + 
    geom_bar(aes(fill = Response), stat = "identity") + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.25)) + # Rotate tick mark labels 
    guides(fill = guide_legend(reverse = TRUE)) + ggtitle("Male vs. Female") + theme(plot.title = element_text(hjust=0.5)) 

enter image description here

、私はよりよい解決策は、(あなたが望んでいた場合や性別によって)問題によってグループにfacet_wrap()を使用することだと思う:

ggplot(df, aes(x =gender, y = Proportion)) + 
    geom_bar(aes(fill = Response), stat = "identity") + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.25)) + # Rotate tick mark labels 
    guides(fill = guide_legend(reverse = TRUE)) + ggtitle("Male vs. Female") + theme(plot.title = element_text(hjust=0.5)) + 
    facet_wrap(~Question) 

enter image description here

0

コンバイン識別変数​​とファセットを持つあなたのデータ:

library(tidyverse) 

bind_rows('male' = df_male, 'female' = df_female, .id = 'gender') %>% 
    ggplot(aes(x = Question, y = Proportion, fill = Response)) + 
    geom_col() + 
    facet_wrap(~gender) 

facetted plot

好きなように編集登場。縦書きレイアウトを使用する場合は、ncol = 1facet_wrapに設定してください。

関連する問題