ggplot2 中的对数轴标签:仅显示必要的数字?

bee*_*guy 6 plot r ggplot2

我想在 ggplot2 中用 log10 刻度上的 x 轴和常规标签而不是具有最小小数位数的科学记数法来制作图表。这意味着我想将 0.1 显示为 0.1 而不是 0.10,将 100 显示为 100 而不是 100.00。

我试过

df = data.frame(x =  c(1:10 %o% 10^(-3:2)), y = rnorm(60))

ggplot(df, aes(x=x, y=y))+
      geom_point()+scale_x_log10(labels=comma)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这显示为许多小数。

@BenBolker 之前回答了一个类似的问题,他的代码适用于没有小数的数字,但如果数字小于 1,它似乎给出与标签=逗号相同的结果。

plain <- function(x,...) {
  format(x, ..., scientific = FALSE, trim = TRUE)
}

ggplot(df, aes(x=x, y=y))+
  geom_point()+scale_x_log10(labels=plain)
Run Code Online (Sandbox Code Playgroud)

hpe*_*626 8

添加drop0trailing = TRUEplain

plain <- function(x,...) {
  format(x, ..., scientific = FALSE, drop0trailing = TRUE)
}
Run Code Online (Sandbox Code Playgroud)

要查看漂亮打印的其他选项,请参阅?format

在此处输入图片说明