R 将刻度线设置为0.01,0.1,1

R 将刻度线设置为0.01,0.1,1,r,ggplot2,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),

我写了下面的代码来制作这个情节

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))

pd使用
scale\u y\u log10
中断
标签
参数(阅读它们)

看起来像:

最后,如果希望标签也为0.1、.1和1,请使用
labels
参数:

ggplot(df,aes(x=x,y=y)) + geom_point() + scale_y_log10(breaks=c(.01,.1,1))
ggplot(df,aes(x=x,y=y)) + geom_point() + 
          scale_y_log10(breaks=c(.01,.1,1),labels=c(.01,.1,1))

使用坐标转换()代替刻度()


df您能给出一个小的可复制示例(即数据)吗?即使你只是做一些模拟你的问题,我尝试了完全相同的代码,但只有0.1出现在中间。这是数据的最大值和最小值最小值:0.01504中位数:0.03957平均值:0.06148最大值:0.43815I有另一组数据,其中最小值=0.1,最大值=0.7,只有0.1出现在刻度的末尾。@TranHuynh如果您的数据范围在0.1到0.7之间,并且您手动将断点设置为0.01、0.1和1,除了0.1之外,为什么您可能希望看到它们中的任何一个?如果您按照要求做了,并提供了一个可复制的示例,我们可以从一开始就告诉您也要通过
limits=c(0,1)
scale\u y\u log10
。我们不是读心术的。@mathematic.coffee&Joran&Thierry:谢谢。在这种情况下,我想我更喜欢
coord\u trans(y=“log10”)
,正如另一个答案所建议的那样。请参见新ggplot2文档站点上的。
ggplot(df,aes(x=x,y=y)) + geom_point() + 
          scale_y_log10(breaks=c(.01,.1,1),labels=c(.01,.1,1))
df <- data.frame(x=1:100,y=10^-(2*runif(100)))
ggplot(df,aes(x=x,y=y)) + geom_point() + coord_trans(y = "log10")