ggplot变换y轴直方图

时间:2016-08-16 18:40:42

标签: r ggplot2 histogram

我有这行代码:

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 个答案:

答案 0 :(得分:3)

您还可以使用scale包定义自己的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)})
                                             )

答案 1 :(得分:2)

您可以使用..count..

中的aes来执行此操作,但不确定您希望的原因
ggplot(AB2, aes(x = logbm)) +
  scale_y_log10() +
  geom_histogram(aes(y = ..count.. * 1.25 / 60))

NB无需在aes中引用data.frame。