0

我正在尝试将条形图的 y 轴转换为对数刻度(即每个刻度之间的对数距离)。

一些虚拟数据:

DF <- data.frame(num=c(1,2,3),label=c("a","b","c"))

我尝试了以下示例:

p <- ggplot(data=DF,aes(x=label,y=num)) + geom_bar() +
  scale_y_continuous(trans = 'log10',
                     breaks=trans_breaks("log10",function(x) 10^x),
                     labels=trans_format("log10",math_format(10^.x)))

这仅记录转换标签,但不转换刻度:

p <- ggplot(data=DF,aes(x=label,y=num)) + geom_bar() + coord_trans(y="log10")

这根本没有绘制任何东西:

p <- ggplot(data=DF,aes(x=label,y=num),y="log")

也没有运气

我也阅读了 0.9 过渡指南 ,但这似乎也不起作用。

编辑:

我忘了包括一个我试过的例子:

p <- ggplot(data=DF,aes(x=label,y=num)) + geom_bar() + scale_y_log10()

这会产生以下警告:

警告消息:在 pretty(trans(x), n, ...) 中:产生了 NaN

4

1 回答 1

8

如果你想做一个 log 10 规模使用

p + scale_y_log10()
于 2012-07-25T09:53:01.587 回答