主な問題:0から1.0までのデータを上向きのバー(0から始まる)として表示したいが、間隔を等間隔にしたくないしかし、ログ間隔。ggplot barplot:ログのスケールされたy軸の小さい正の数値を表示する方法
私はggplotの棒グラフとして以下のデータセットに「平均」と表示されている列を表示しようとしていますが、数字は非常に小さいので、ログ変換ではなくログスケールでy軸を表示したいデータそのもの。言い換えると、y軸ラベルが0,1e-8,1e-6 1e-4 1e-2、1e-0(すなわち0から1.0までですが、間隔はログスケールされています)の直立バーが必要です。
バーが反転しているため、以下の解決法は機能しません。
> print(df)
type mean sd se snp
V7 outer 1.596946e-07 2.967432e-06 1.009740e-08 A
V8 outer 7.472417e-07 6.598652e-06 2.245349e-08 B
V9 outer 1.352327e-07 2.515771e-06 8.560512e-09 C
V10 outer 2.307726e-07 3.235821e-06 1.101065e-08 D
V11 outer 4.598375e-06 1.653457e-05 5.626284e-08 E
V12 outer 5.963164e-07 5.372226e-06 1.828028e-08 F
V71 middle 2.035414e-07 3.246161e-06 1.104584e-08 A
V81 middle 9.000131e-07 7.261463e-06 2.470886e-08 B
V91 middle 1.647716e-07 2.875840e-06 9.785733e-09 C
V101 middle 3.290817e-07 3.886779e-06 1.322569e-08 D
V111 middle 6.371170e-06 1.986268e-05 6.758752e-08 E
V121 middle 8.312429e-07 6.329386e-06 2.153725e-08 F
以下のコード適切には、しかし、私はスケールy軸ログをしたいので、私は(scale_y_log10に追加エラーバー
ggplot(data=df, aes(x=snp,y=mean,fill=type))+
geom_bar(stat="identity",position=position_dodge(),width=0.5) +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se),width=.3, position=position_dodge(.45))
とグループ化barplotを生成する)を以下のように:
をggplot(data=df, aes(x=snp,y=mean,fill=type))+
geom_bar(stat="identity",position=position_dodge(),width=0.5) + scale_y_log10() +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se),width=.3, position=position_dodge(.45))
しかし、理想的にはバーは上から落ちていますが、私は単に彼らが(通常通り)上がってほしいと思っています。
あなたは
barplotsはゼロで定義されています。あなたは非常に小さい数字を持っています。非常に小さい数の対数は負である。バーはゼロから負の数になります。 – Axeman
私はデータそのものを変換してログに記録するのではなく、数値がまだ正の値なので、少し混乱しています。さらに、データをプロットすると、y軸単位はまだ1e-6(下)から1e-3まで増加していますが、不思議なことにバーは上から下に向かって "下降"しています。小さい数字。私はちょうどログスケールでデータを表示したいが、データ自体は変換しない。あなたが絶対にデータを変換していることを確かめています。 –
あなたは絶対にデータを変換しています。 'scale_y_log10()' logはプロットする前にデータを変換します。 – hrbrmstr