使scale_y_log10的标记为0.01,0.1,1

时间:2012-02-10 05:02:53

标签: r ggplot2

我编写了以下代码来制作情节

pd<- position_dodge(.2)  # # move them .05 to the left and right
pm25 <- ggplot(data, aes(x=CombSEG, y=conc,shape=A,color=A, lty=A,     group=A)) + 
geom_point() +
geom_line() +
geom_errorbar(aes(ymin=conc-se, ymax=conc+se),
              width=.1, position=pd) +
theme_bw()+
limits(c(0
scale_y_log10(breaks=c(0.01,0.1,1),labels=c(0.01,0.1,1))

自动缩放比例为10 ^ -1.8,10 ^ -1.6,10 ^ -1.4 ... 10 ^ -0.4。我实际上希望最低刻度为0.01,最高刻度为1.

感谢您的帮助。

编辑:这是我尝试代码后情节的样子。 enter image description here

2 个答案:

答案 0 :(得分:16)

使用breaks的{​​{1}}和labels个参数(了解它们here)。

scale_y_log10

看起来像: enter image description here

然后修改log10比例以在.01,.1和1处有自定义中断,使用# make up some sample data df <- data.frame(x=1:100,y=10^-(2*runif(100))) ggplot(df,aes(x=x,y=y)) + geom_point() + scale_y_log10() 参数:

breaks

看起来像: enter image description here

最后,如果您希望标签也是0.1,.1和1,请使用ggplot(df,aes(x=x,y=y)) + geom_point() + scale_y_log10(breaks=c(.01,.1,1)) 参数:

labels

enter image description here

答案 1 :(得分:16)

使用coord_trans()而不是scale()

df <- data.frame(x=1:100,y=10^-(2*runif(100)))
ggplot(df,aes(x=x,y=y)) + geom_point() + coord_trans(y = "log10")

enter image description here