我有一个像ggplot
这样的分面:
library(ggplot2)
grid <- seq(-10,10,length.out=1000)
df <- data.frame(x=rep(grid,2),y=c(grid^2,100+grid^2/100000000),group=rep(c(1,2),each=length(grid)))
ggplot(df,aes(x,y)) + geom_line() + facet_wrap(~group,scales='free')
问题是第2组的y轴值全部相同,因为它们仅在第6-7位小数中不同。所以我试过
fmt <- function(){
function(x) format(x,nsmall = 7,scientific = FALSE)
}
ggplot(df,aes(x,y)) + geom_line() + facet_wrap(~group,scales='free') + scale_y_continuous(labels = fmt())
但是为第一组添加了许多不必要的小数(呃!)。
有没有办法让ggplot
显示,但是y轴上的值需要多个小数位才能对所有方面都有所不同?或者在这里用gridExtra
手动执行此操作?
答案 0 :(得分:6)
这似乎有效:
fmt <- function(){
function(x) {
d <- log10(min(diff(x)))
if(d < 0) format(x,nsmall = abs(round(d)),scientific = FALSE) else x
}
}
ggplot(df,aes(x,y)) + geom_line() +
facet_wrap(~group,scales='free') + scale_y_continuous(labels = fmt())