8

私はデータフレームを持っています:

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

ggplot (barplot) で log10(count) と log10(reads) をプロットするにはどうすればよいですか?

私は試した:

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

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

4

3 に答える 3

13

あなたはこのようなことをすることができますが、連続していないx軸をlog10スケールでプロットすることは私にとって意味がありません:

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

ここに画像の説明を入力

log10 スケールの y 軸のみが必要な場合は、次のようにします。

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

ここに画像の説明を入力

于 2013-10-15T20:04:46.003 に答える
3

使用stat="identity":

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

実際には、アプローチで警告が表示されます。

変数を y にマッピングし、さらに stat="bin" を使用します。stat="bin" を使用すると、y 値を各グループのケース数に設定しようとします。これは予期しない動作を引き起こす可能性があり、ggplot2 の将来のバージョンでは許可されません。y でケース数を表す場合は、stat="bin" を使用し、変数を y にマップしないでください。y でデータの値を表す場合は、stat="identity" を使用します。例については、?geom_bar を参照してください。(非推奨。最後に使用されたのはバージョン 0.9.2)

于 2013-10-15T20:04:03.647 に答える
1

これを行う直接的な方法があります。つまり、 geom_col() 関数を使用することです。コードを少し調整するだけです。

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

stat引数をidentitywithに設定した場合と同じ出力が得られgeom_bar()ます。問題は、統計のデフォルトとしてgeom_bar()使用countするため、y 軸に変数を使用しないことです。単純にカウント、つまり x 軸の各値の出現回数を y 軸に使用します。これがあなたの質問に答えることを願っています。

于 2018-01-14T13:44:28.163 に答える