2016-08-12 6 views
0

ヒストグラムを作成しようとしました。この例では、「」のヒストグラムに「」を重み付けしたいとします。以前の投稿を検索しましたが、これは私の問題に対処していないようです。私は、ヒストグラムの異なる加重結果を期待ヒストグラムを作成しようとすると予期しないggplot出力が発生するR

1):

は私が解決しようとしている2つの問題を抱えています。私は "2"の値がバーを16%に、 "3"の値を24%に、 "4"の値を18%に、 "5"の値に42%のバーがあります。

2)ヒストグラムに「0」の値が100%の黒いバーが表示される理由はわかりません。

申し訳ありませんが、残念ながら、私はSOに初めているので、出力の画像を投稿できません。

私は大いに助けてくれてありがとう!ここで

が再現可能な例である:

library(ggplot2) 

amount <- c(rep(0.02, 50), rep(0.03, 50)) 
value <- c(rep(2, 20), rep(3, 30), rep(4, 15), rep(5, 35)) 
my_df <- data.frame(amount, value) 

xvar <- my_df$value 
weight <- my_df$amount 

histogram <- ggplot(my_df, aes(xvar)) 
histogram <- histogram + geom_histogram(aes(weight)) 
histogram <- histogram + geom_histogram(binwidth=0.25, 
         colour="black", fill="white") 
plot(histogram) 
+2

あなたの意図した出力にかかわらず、あなたの 'ggplot'コード自体には間違いがありますが、バックアップして重み付けについて質問するのに役立ちます。値の20%は2です。データが与えられてから、その部分が私には意味をなさないので、それから0.16の重み付けされた値を得る方法を説明できますか? – joran

+2

...具体的には、ヒストグラムを加重したいと言うなら、 'value'のヒストグラムを生成する' ggplot(my_df、aes(x = value、weight = amount))+ geom_histogram() 「量」によって重み付けされる。しかし、それはあなたが描写したものを生み出すようには見えないので、私はあなたが実際に望むものを理解しようとしています。 – joran

+0

ありがとう非常にジョラン。うまくいけば私はこれについて正しい考え方を考えています。 ** amount ** = 2.5の合計。 **値** = 2の単一項目の場合、パーセントは0.02/2.5 = 0.8%です。つまり、2の値が20のアイテムがあるため、2のすべてが0.8%* 20 = 16%になるでしょう。ここのコードはコンパクトではないことがわかりましたが、私はそれを書いて誰かがそれぞれの連続したコード行ヒストグラムにするでしょう。私があなたのコードを使用したとき、私は確かに離れていた黒いバーの問題(これを前に試しましたが、エラーが発生しました...間違って入力している必要があります)。重みは私が期待したものではありません – DaveM

答えて

0

[OK]を、私は私が間違って何をやっていた考え出しました。おかげで再びジョラン、あなたはまだ間違いなく私を助けた。私はy軸上のユニットによって投げ飛ばされたと思って、私は期待通りの結果を得るために、pctを以下のように追加する必要がありました。

私は体重がここにすべての「2」の値の代わりに「2」(すなわち、0.02 * 20 = 0.4の代わりに、総の割合をを合計することを認識していませんでした0.02 * 20/2.5 = 16%)。グラフバーは比較的同じように見えますが、単位はまったく異なります。

私はコードをもっとコンパクトに書いていますが、それをより良くするためのヒントも大好きです。ここで

は私が望んで私を得た私の改訂コードです。また、作品以下のよう

library(ggplot2) 
library(dplyr) 

amount <- c(rep(0.02, 50), rep(0.03, 50)) 
value <- c(rep(2, 20), rep(3, 30), rep(4, 15), rep(5, 35)) 

my_df <- data.frame(amount, value) 
my_df <- my_df %>% 
    mutate(pct = amount/sum(amount)) 

histogram <- ggplot(my_df,aes(x = value, weight = pct)) + 
geom_histogram(binwidth=0.25, colour="black", fill="white") 

plot(histogram) 

は最後に、私は体重の配置に気づき、私があればそこに知らないので、私は、これは少し混乱発見しました

histogram <- ggplot(my_df,aes(x = value)) + 
geom_histogram(aes(weight = pct), binwidth=0.25, colour="black", fill="white") 
+0

あなたの混乱について:1つのコマンドのエース( - 技術)は、前のコマンドから自動的に継承されます。これにより、特定のレイヤーが「追加のパラメーターx」と同じ美学をとることができます。 2つの行の間に別のgeom_histogram()を追加してみてください。 – AlexR

+0

Alexに感謝します。 – DaveM

関連する問題