2016-08-16 2 views
0

У меня есть эта строка кода:ggplot преобразование у оси гистограммы

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

И у меня есть проблемы в попытке превратить единицу оси у - сначала я должен зарегистрировать ее, с:

scale_y_log10() 

После этого я хочу разделить все значения на 60, затем несколько на 1.25. Однако с приведенным выше кодом я, похоже, не могу настроить его, просто добавив: 60*1.25 после команды.

Есть ли способ сказать ggplot сделать это ??

Приветствия,

ответ

2

Вы можете сделать это, хотя и не уверен, почему вы хотите, с помощью ..count.. в aes

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

NB нет необходимости ссылаться на data.frame в АЭ.

3

Вы также можете указать свой собственный 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)}) 
              )