我想在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
。