如何在ggplot轴刻度标签中使用自然对数而不是log10?

时间:2019-04-17 05:27:15

标签: r ggplot2

我发现可以使用scale_x_log10()来使用以10为底的对数,但是我想使用自然对数。我该怎么做?我只想更改图的缩放比例,而无需修改要绘制的基础值。

这是一个带有数据集的最小示例

set.seed(42)
data.frame(exp=rexp(100,5)*10) %>%
  ggplot(aes(x=exp)) +
  geom_density() +
  scale_x_log10(breaks = c(0.1, 0.2, 0.3, 0.5, 1, 2, 4, 6))

enter image description here

1 个答案:

答案 0 :(得分:3)

您可以使用scales::log_trans(它的base参数默认为自然对数)。

set.seed(42)
data.frame(exp=rexp(100,5)*10) %>%
  ggplot(aes(x=exp)) +
  geom_density() +
  scale_x_continuous(breaks = c(0.1, 0.2, 0.3, 0.5, 1, 2, 4, 6), trans = scales::log_trans())

enter image description here

您还可以创建自己的函数scale_x_ln

scale_x_ln <- function(...) scale_x_continuous(..., trans = scales::log_trans())
set.seed(42)
data.frame(exp=rexp(100,5)*10) %>%
  ggplot(aes(x=exp)) +
  geom_density() +
  scale_x_ln(breaks = c(0.1, 0.2, 0.3, 0.5, 1, 2, 4, 6))

给出相同的结果。