2016-08-16 144 views
0

我有這行代碼:ggplot變換Y軸直方圖

ggplot(data=AB2, aes(AB2$logbm)) + 
    geom_histogram(breaks=seq(-1.5, 2.5, by=((max(AB2$logbm)-min(AB2$logbm))/7))) 

而且我已經在努力改變Y軸的單位的問題 - 首先我需要記錄它,用:

scale_y_log10() 

之後,我想通過60將所有值除以1.25。但是,通過上面的代碼,我似乎無法通過簡單地在命令後添加:60*1.25來進行調整。

有沒有辦法告訴ggplot做到這一點?

乾杯,

回答

2

您可以在aes

ggplot(AB2, aes(x = logbm)) + 
    scale_y_log10() + 
    geom_histogram(aes(y = ..count.. * 1.25/60)) 

NB做到這一點,雖然不知道你爲什麼會想,通過使用..count..無需引用data.frame在AES。

3

您還可以使用scales包定義自己的trans。通常情況下:

scale_y_continuous(trans = "log10") 

有了轉變:

scale_y_continuous(trans = scales::trans_new("lognew", 
              transform = function(x){log10(x)*1.25/60}, 
              inverse = function(x){10^(x*60/1.25)}) 
              )