2016-10-13 19 views
0

私はR. にggplotで棒グラフを作成したいサンプルデータは以下のとおりである:私が表示したいと思い何ggplot2のgeom_barを上書きする方法は?

Name <- c('Sample1', 'Sample2', 'Sample3') 
Total <- c(86020045,30974095,1520609) 
Part <- c(41348957, 2956650, 595121) 
DT <- data.frame(Name,Total,Part) 
DT 
ggplot(DT, aes(Name, Total, fill=Name)) + 
     geom_bar(position="stack",stat="identity") 

はそれぞれ名前の合計カウントを示しスタックバーチャートあり、バーの中にパーツ数を表示し、バーの中央に%のラベルを付けます。

どうすればよいですか?私はここで検索してきましたが、解決策を見つけることができませんでした。

+1

あなたは、形を変える必要があります: 'library(tidyverse);パーツ、Not_Part)%>%ggplot(aes(x =名前、y =値、塗りつぶし= part))+ geom_bar(stat = 'identity') 'そして' geom_text'を使って – alistaire

+0

@ Alistaireにラベルを付けてくださいありがとうございました!これは美しく動作します! – tmhs

答えて

1

ああ...誰かが私がそれを書いている間に答えをコメントしたようです。私はちょっと違うので、私はとにかく投稿します。

DT <- transform(DT, Part0 = Total - Part) 

library(reshape2) 
DT2 <- melt(DT, id.vars = c("Name", "Total")) 
DT2 <- transform(DT2, perc = value/Total * 100) 

ggplot(DT2, aes(Name, perc, fill=variable)) + 
    geom_bar(position="stack",stat="identity") + 
    geom_text(data = subset(DT2, variable == "Part"), aes(y = (perc), 
     label = paste0("Total = ", Total, "\n", 
         "Part = ", value, "\n", 
         round(perc, 1), "%\n"))) 

あなたがvalue代わりのpercを使用する場合は、比例棒グラフを取得しますが、サンプル3の合計は、サンプル1より多くの小さいので、テーブルを読み取ることが難しいことになるだろう。だから私は実際の値の代わりにパーセンテージを使うことに決めました。

+0

ありがとうございました!確かに、これは視覚的に比を視覚化するための良い方法です。 – tmhs

関連する問題