我正在一个循环中绘制几个 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)
}
我认为,您可以进一步使用nsmall
anddigits
参数来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))