2013-10-15 11 views
5

私はデータフレームを持っている:GGplot BarplotはY値を受け入れませんか?

>picard 
count reads 
1 20681318 
2  3206677 
3  674351 
4  319173 
5  139411 
6  117706 

にはどうすればggplot(barplot)に(カウント)log10の対(読み込み)のlog10をプロットしますか?

私が試み:

ggplot(picard) + geom_bar(aes(x=log10(count),y=log10(reads))) 

をしかし、それは(読み出し)Y = log10のを受け付けていません。 y値をプロットするにはどうすればよいですか?

答えて

5

;(推奨されていません最後のバージョン0.9.2で使用される)、しかしlog10のスケールで、連続していないx軸をプロットすることは私にとって意味がありません。

ggplot(picard) + 
    geom_bar(aes(x=count,y=reads),stat="identity") + 
    scale_y_log10() + 
    scale_x_log10() 

enter image description here

あなただけのただやる、log10のスケールとy軸をしたい場合:

ggplot(picard) + 
    geom_bar(aes(x=count,y=reads),stat="identity") + 
    scale_y_log10() 

enter image description here

+0

バーの幅を広げる方法はありますか? –

+0

@ user2703967はい、 'geom_bar()'の 'width'引数を使います。 – juba

+0

グラフはデータのために非常にずらされています。 geom_density()を使ってこれらの値をプロットすることはできますか?私はおそらく自分の密度を設定する必要がありますが、私はそれを行う方法を知らない。 –

2

使用stat="identity"

がyに変数をマッピングしてもSTAT = "ビン" を使用して:

ggplot(picard) + geom_bar(aes(x=log10(count),y=log10(reads)), stat="identity") 

あなたが実際にあなたのアプローチとの警告が表示されます。 stat = "bin"の場合、y値を各グループのケース数に設定しようとします。 予期しない動作が発生する可能性があり、ggplot2の将来のバージョンでは許可されません。 yが大文字小文字の数を表すようにするには、stat = "bin"を使用し、変数をyにマップしないでください。 yにデータの値を表す場合は、stat = "identity"を使用します。 例については?geom_barを参照してください。あなたはこのような何かを行うことができ

0

これは、geom_col()関数を使用して直接行うことができます。

ggplot(picard) + geom_col(aes(x=log10(count), y=log10(reads))) 

をし、それがgeom_bar()identityからstat引数を設定することと同じ出力が得られます:ちょうどあなたのコードに小さな調整を行います。つまり、geom_bar()は、statのデフォルトとしてcountを使用しているため、y軸の変数は一切使用されません。それは単にカウント、すなわち、x軸の各値の出現回数を使用し、それはy軸です。これがあなたの質問に答えることを願っています

関連する問題