2016-12-25 7 views
-1

タイタニックデータセットを持つことで、旅客クラスに対して年齢/性別のヒストグラムを描画します。R + ggplot。子データを親データと同じプロットで描画する

str(titanic)は、私が旅行クラスに対するオス/メスの割合のプロットを作った、

> 'data.frame': 714 obs. of 4 variables: 
$ Survived: int 0 1 1 1 0 0 0 1 1 1 ... 
$ Pclass : int 3 1 3 1 3 1 3 3 2 3 ... 
$ Sex  : chr "male" "female" "female" "female" ... 
$ Age  : num 22 38 26 35 35 54 2 27 14 4 ... 

まず、以下のデータを提供します。

それは今、私は同じグラフを使用しますが、追加の情報を追加したい

ggplot(data = titanic, aes(x = factor(Age), fill = factor(Sex))) + 
    geom_bar(position = "dodge", aes(y = (..count..)/sum(..count..))) + 
    facet_grid(. ~ Pclass) + scale_x_discrete(breaks=c(20,40,60)) + 
    ylab("Frequency") + xlab("Age") + 
    scale_fill_discrete(name = "Sex") 

enter image description here

によって行われている - すべてのカテゴリの生存率の>割合。 例えば、ファーストクラスを旅行した生存女性の割合は20-30歳ですか?

同じバーに表示したい、つまり各列を2つの部分に分割(生き残り/生き残らない)します。

ggplotを使ってもいいですか?そしてもしそうなら、どうですか?

+0

あなたは 'titanic'のDFに4D' Titanic'配列から行くためにコードを提供することができますか? – Axeman

+0

生存と 'facet_grid(Sex〜P.class)'によって 'fill'したいと思うかもしれません。 – Axeman

+0

あなたは 'facet_grid(。〜Pclass + Survived)'を使って目標を達成していますか? –

答えて

1

内蔵のタイタニックデータセットを使用すると、@Axemanがコメントに示唆したものをおおまかに表示できます。年齢(子供/大人)のカテゴリは2つしかないので、データのビンの仕方を決める必要があることに注意してください。彼らは希望回数より有意義に異なるものを示すことが表示されないよう

enter image description here

ggplot(as.data.frame(Titanic) 
     , aes(y = Freq 
      , x = Age 
      , fill = Survived)) + 
    geom_col() + 
    facet_grid(Sex ~ Class) 

は重要なことは、私は、あなたが現在の方法で周波数を示すことによって何かを得ていることを確認していません。代わりに、生存した各グループ内の割合を表示する場合は、最初にそれらの割合を計算してから、それを ggplotに渡す方がよい場合があります。ここには dplyrを使った例があります。繰り返しますが、あなたの年齢区分はあなたが望むものであればどんなものでもかまいませんが、ビンが狭ければ狭いほど、データが騒々しくなることに注意してください。

as.data.frame(Titanic) %>% 
    group_by(Class, Sex, Age) %>% 
    mutate(Proportion = Freq/ sum(Freq)) %>% 
    ggplot(aes(y = Proportion 
      , x = Age 
      , fill = Survived)) + 
    geom_col() + 
    facet_grid(Sex ~ Class) 

enter image description here

関連する問題