2017-04-06 5 views
0

このコードでは、各チケット価格のビン数が多いグラフを作成します。ここで、y軸は観測数です。フィルは、生き残った乗客数と、 t。geom_histogramスケールパーセンテージby

ggplot(train, aes(x = Avg.Fare.y, fill = Survived)) + 
    geom_histogram(binwidth = 1) 

しかし、私が本当にしたいことは、私が代わりにカウント、塗りつぶしの割合を見ることができるように各ビンをスケーリングしたグラフです。したがって、次のようなものがあります。Graph

答えて

1

@JakeKauppの答え​​は動作しますが、それはggplot外の集計計算を実行せずに結果を達成することが可能です。ここでgeom_barを使用して代替がある(つまり、デフォルトでstat = 'count'使用しています)とposition = 'fill'

library(dplyr) 
library(ggplot2) 

plot_data <- titanic::titanic_train %>% 
    mutate(fare_bin = cut(Fare, quantile(Fare), labels = FALSE, include.lowest = TRUE)) 

ggplot(plot_data) + 
    geom_bar(aes(x = fare_bin, fill = factor(Survived)), position = 'fill') 

0

次のアドバイス:私たちが手助けするためのデータのサンプルを提供してください。

私は間違いなくプロットの外にデータを要約し、次にgeom_col(position = "stack")を使用して必要なものを達成します。

library(dplyr) 
library(ggplot2) 

plot_data <- titanic::titanic_train %>% 
    mutate(fare_bin = cut(Fare, quantile(Fare), labels = FALSE, include.lowest = TRUE)) %>% 
    count(Survived, fare_bin) %>% 
    group_by(fare_bin) %>% 
    mutate(percent = n/sum(n)) 

ggplot(plot_data, aes(x = fare_bin, y = percent, fill = factor(Survived))) + 
    geom_col(position = "stack") 

enter image description here

+0

おかげで多くのことを、それが働きました!私はより多くのグループを得るためにbreaks = seq(1、lenght、2)に分位数を微調整しました。 PS。ええ、私はそれがKaggleからのタイタニックの練習競争のためであることを言わなければならない... – GreenManXY

関連する問題