2017-11-18 6 views
0

私は現在、「esoph」(IIRCはRで利用可能ですが、私はCSVに移行しました)というデータセットに基づいてレポートを作成していますが、ggplot2で限られた経験を持つ素晴らしいグラフィックをいくつか作成できました。私は割合棒グラフを積み重ねていました(すべての棒の合計は1になりました)、私は成功しましたが、個々の比率を各バーに挿入する方法を見つけることはできません。ggplot2を使って積み上げ棒グラフに個別の割合を追加する方法は?

このプロットを生成
require(stats) 
library(ggplot2) 

data <- esoph 

g <- ggplot(data, aes(x = ncases, fill = tobgp)) + 
    geom_bar(position = 'fill') + 
    scale_fill_brewer() + 
    xlab("Number of cancer occurences") + 
    ylab("Proportions for each group") +     
    guides(fill=guide_legend(title="Alcohol ingestion (g/day)")) 

g 

:ここ

は、実施例(私の実際のコードでは、それはポルトガル語ラベルで、少し違うのですが、これはうまく動作します)です

img

私は、割合を計算してからggplotにフィードするのが一番良いと読んだことがありますが、どうやってそれを行うのか分かりません。

答えて

0

割合を計算するには、espohデータフレームに2つの列を追加することができます。基本的には、ncasesで合計値を持つ列を追加します。

espoh[,fraction:=tobgp/total] 

あなたの積み重ねグラフにラベルを追加するgeom_text機能を使用してください:

次にとして割合を計算

espoh[,.(total=sum(tobgp)),by=ncases] 

:あなたはlibrary(data.table)を使用している場合、それはこのようなものになります

+ geom_text(aes(x=ncases, y=tobgp, label=fraction, position=position_stack(vjust=0.5), colour="black") 
+0

'[.data.frame(esoph、、合計=合計(tobgp))、by = ncasesのエラー: 未使用引数(by = ncases) ' –

+0

'esoph'を直接使っているとき(あるいは' data-esoph'のように呼び出すとき)、私はそれらのエラーを受け取り続けます。 CSV(私がやっている)からデータを抽出すると、すべてが問題ありません –

関連する問題