我正在循环绘制几个ggplot图表(我知道,我知道不要循环使用plyr ...但是),并且好奇是否有办法将小数精度设置为一个小数(即0.0)。我正在使用以下比例转换。

p <- p + scale_y_log10()

任何帮助,将不胜感激。

最佳答案

我的印象是默认为十进制(即1.2),但是如果您看到的小数位数更多,则可以将自己的格式传递给刻度:

fmt_dcimals <- function(decimals=0){
   # return a function responpsible for formatting the
   # axis labels with a given number of decimals
   function(x) as.character(round(x,decimals))
}

然后将比例尺添加到绘图中:
ggplot( ... ) + scale_y_log10(labels = fmt_dcimals(2))

现在,我考虑了这一点,我应该补充一点,如果您真的要编写自己的格式化程序,则可能应该坚持使用format函数来完成工作,而不是四舍五入和强制转换。那可能更安全,更“尼科尔”。

例如,要在小数点后强制两位,您可以将此格式设置功能更改为以下形式:
fmt_dcimals <- function(decimals=0){
    function(x) format(x,nsmall = decimals,scientific = FALSE)
}

我认为,您可以进一步将nsmalldigits参数与format一起使用,以获得所需的内容。使用示例:
df <- data.frame(x = 1:5,y = rexp(5))
ggplot(df,aes(x = x,y=y)) +
    geom_point() +
    scale_y_log10(labels = fmt_dcimals(2))

关于r - ggplot2 y轴标签十进制精度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10035786/

10-12 19:19