我想在ggplot2中制作一个图形,其x轴在log10刻度上,标签以常规而不是科学计数法表示,且最小位数为小数。这意味着我想将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)


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

@BenBolker之前也回答过类似的question,并且他的代码对于没有小数的数字也能正常工作,但是如果数字小于1,则其结果似乎与labels =逗号相同。

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

ggplot(df, aes(x=x, y=y))+
  geom_point()+scale_x_log10(labels=plain)

最佳答案

drop0trailing = TRUE中添加plain

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


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

r - ggplot2中的日志轴标签:仅显示必要的数字?-LMLPHP

10-04 22:56