如何在ggplot2中设置log10对数y轴的显示上限为100
解决方法
直接修改现有代码中的y轴标度配置即可,log10转换的坐标轴设置范围时直接传入原始数据尺度的数值,不需要手动做对数换算。
- 若需要裁掉y值大于100的曲线部分:直接在你现有的
scale_y_continuous()函数中添加limits参数,注意log轴下限必须设为大于0的值,可根据你数据的实际最小值调整。修改后的y轴配置代码示例:
# 示例下限设为0.1,你可以替换成自己数据对应的合理下限 scale_y_continuous(trans='log10', limits = c(0.1, 100))
如果需要让y轴刻度更规整,可以顺便加上breaks参数指定要显示的刻度,比如breaks = c(0.1,1,10,100)。
- 若不需要裁剪超出100的曲线,仅想把视图显示上限限制在100:不要在
scale_y_continuous里设limits,额外添加coord_cartesian()配置即可,这种方式不会丢弃范围外的数据,只是缩放显示窗口:
# 同样将下限替换为你需要的数值 coord_cartesian(ylim = c(0.1, 100))
修改后完整代码参考(以裁剪超出值、下限0.1为例)
ggplot(file1, aes(x=f11,colour=time, alpha=time, size=time))+ geom_line(aes(y = S1))+ scale_color_manual(values =c("t1"="red","t2"="magenta","t3"="coral4","t5"=cl[8]), labels=labels1 ,name="Time")+ scale_alpha_manual(values=c(1, 1, 1, 1),labels=labels1)+ scale_size_manual(values = c(.6, .61, .61, .61),labels=labels1)+ guides(colour = guide_legend(title=title), alpha = guide_legend(title=title), size = guide_legend(title=title))+ labs(title="Column 1")+ theme_bw()+ theme(plot.title=element_text(size=12,hjust=0.5,face="bold"), aspect.ratio = 1, panel.grid.major = element_blank(), panel.grid.minor = element_blank())+ xlab(growth)+ylab(nutrient)+ scale_x_continuous(breaks = seq(0, 0.5, by=0.10), limits=c(0,0.5))+ scale_y_continuous(trans='log10', limits = c(0.1, 100), breaks = c(0.1,1,10,100))
注意:不要把y轴下限设为0,
log10(0)无意义,会导致坐标轴渲染报错。
内容的提问来源于stack exchange,提问作者Shalen
相关产品推荐
相关产品推荐

