2017-12-14 19 views
1

変数を合計する棒グラフを2つの次元に沿ってプロットすると、1つはxに沿って広がり、もう1つは垂直に積み重ねられます。ggplot geom_barとstat = "sum"

私は次の2つの命令は同じことをすると思いますが、2番目の命令だけでは目的の出力が得られません。

私は最初のケースで何が起こっているのかを理解したいと思います。ggplot2の組み込み機能を使用して適切な出力を得る方法がある場合は、この絵を得

enter image description here

p2 <- ggplot(diamonds %>% 
       group_by(cut,color) %>% 
       summarize_at("price",sum,na.rm=T), 
       aes(cut,price,fill=color)) + 
    geom_bar(stat="identity",na.rm=TRUE) 

:このプロット得

library(ggplot2) 
library(dplyr) 
p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
    geom_bar(stat="sum",na.rm=TRUE) 

enter image description here

をここに私たちの棒の上部があるべき場所だ、P1ません次の値を指定してください:

diamonds %>% group_by(cut) %>% summarize_at("price",sum,na.rm=TRUE) 
# # A tibble: 5 x 2 
# cut price 
# <ord> <int> 
# 1  Fair 7017600 
# 2  Good 19275009 
# 3 Very Good 48107623 
# 4 Premium 63221498 
# 5  Ideal 74513487 

答えて

1

geom_barstatオプションを誤解している可能性があります。この場合、各係数の値を各バー内で合計し、各色の合計量に基づいて着色するバーを追加するため、値を使用するgeom_colへの呼び出しを簡略化することができますバーの高さ。したがって各カテゴリ内のすべての値を「合計」します。

p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
     geom_bar(stat = "identity", na.rm=TRUE) 

:あなたはSTAT呼び出しでgeom_barを使用したい場合は、あなたが「アイデンティティ」のstatを使用したい、また

p1 <- ggplot(diamonds,aes(cut,price,fill=color)) + 
     geom_col(na.rm=TRUE) 

:たとえば、次の例は、所望の出力が得られます詳しくは、このスレッドを考慮してください。https://stackoverflow.com/a/27965637/6722506

+0

また、私は 'ggplot(ダイヤモンド、AES(カット、塗りつぶし=色、重量=価格))+ \t geom_bar(na.rm = TRUE)'も同じことをもたらすであろうと思います結果は 'p2'となります。 – joran

+0

^トリップにエラーがあります。 'geom_bar'を使うためには、' 'identity''として' stat'を指定する必要があります。 – creutzml

+1

それは私のためにエラーをトリップしない、あなたはそれを実行してもらえますか?あなたは、私が「y」という美学ではなく「体重」の美学を使用していることに気付かなかったかもしれません。違いがあります。 – joran

関連する問題