主要問題:我想要顯示從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
下面的代碼正確地產生與誤差棒分組barplot
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))
然而,我想使y軸日誌縮放,所以我在scale_y_log10添加()如下:
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()'日誌在繪製數據之前轉換數據。 – hrbrmstr