2016-10-26 11 views
2

col "x"、 "y"、通常の行( "x"と "y"は数字の集合として扱うことができます)私が望むのは、xを "x"に、yを "y"に合わせた棒グラフをプロットすることだけです。 geom_bar(stat='identity')を使用しようとしましたが、予想外の結果をもたらしました。私は、バーx値に対応するすべてのy値を合計して計算しました。 stat_identity(geom='bar')と試してみましたが、結果は素晴らしかったですが、問題が1つ発生しました。stat_identityに固定alphaを設定する方法がわかりません(バーx値に対応するサンプル数に自動的にバインドされるようです)。ここで は例です:geom_barはx軸とy軸に正確に結びついています(集約なし)

ggplot() + 
    geom_bar(data = xs, aes(x, y), stat = "identity", alpha = 0.5) 

enter image description here

ggplot() + 
    stat_identity(data = xs, aes(x, y), geom = "bar", alpha = 0.5) 

enter image description here

だから、もう一度、目標"X" に縛らXで棒グラフをプロットしますyはyに結びついています。したがって、2番目の例では解決しますが、alphaパラメータに問題があります。

更新:テストデータを含むファイルはhereです。 GitHubの要点はthereです。

+0

あなたは、いくつかのデータを提供してもらえますか? 2番目のプロットで問題を再現することはできません。 – Haboryme

+0

@Haboryme、はい、もちろんです。ちょっと待ってください。 – Artemy

+0

@Haboryme、投稿を更新しました。データへのリンクは最後です。 – Artemy

答えて

3

xの場合、yに複数の観測値を含むデータに対してbar_plotを実行したいという問題があります。
geom_barを使用している場合、単純に値を加算(ビニング)しています。
stat_identityを使用すると、合計されませんが、各値の発生回数の情報が保持されます。したがって、アルファ値は、極値(0と10にはそれぞれ1つの観測値しかない)のはるかに低い値に設定されます。

得られたグラフのようなグラフをstat_idendityとしたい場合は、発生数に関する情報を削除する必要があります。単一の値の繰り返ししかないので非常に簡単です。

ggplot(data = xs[!duplicated(xs),], aes(x=x, y=y)) + 
    geom_bar(stat = "identity") 

enter image description here

+0

答えのThx。だから、ggplotは自動的に発生数にバインドできるパラメータを見つけ出します。そして、これは避けられないでしょうか? – Artemy

+0

'ggplot'でもう少し手を加えた後、問題は値をalphaに設定したようです。あなたがアルファを設定しない場合、私は同じプロットを取得します。しかし、率直に言って、私はなぜアルファがデータの分布のみを反映しているのか(なぜなら、アルファは本当に発生数に相関している)に迷っています。私はドキュメンテーションの説明を見つけることができません。 – Haboryme

+0

はい、alphaの問題はまだ存在します。私は0.5にする必要がありますが、それは無視します。 – Artemy