我发现可以使用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))
答案 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())
您还可以创建自己的函数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))
给出相同的结果。