如何解决我可以有一个对数刻度 y 轴和一个正常的第二个 y 轴吗?
我首先要说的是,我知道这通常是不受欢迎的,因为它可能非常具有误导性。然而,在我的例子中,我只是在 x 轴上显示时间关系(第二个 y 轴上的实际值就我的解释而言相当随意)。
我的第一个 y 轴应该在 log10 中以显示低浓度数据的模式。我的第二个 y 轴应该只是“正常”而没有变换。这可以在ggplot中做到吗?我找到了上一个问题 here,但答案不一定与我的问题有关。
这是我现在在脚本中进行的操作:
> dput(toy)
structure(list(date = c("11/5/17","11/6/17","1/5/18","3/27/18","3/28/18","3/29/18","6/20/18","6/20/18"),type = c("4cm","12cm","0cm","4cm","0cm"),variable = c("ch4","ch4","ch4"),value = c(0.37,0.7,0.43,10.21,0.3,0.29,32.59,7.1,7.42,117.09,2.4,1.54)),class = "data.frame",row.names = c(NA,-12L))
> dput(dis)
structure(list(date = c("11/5/17","6/20/18"
),discharge = c(0.64,0.33,0.31,3.7)),-4L))
AAAND 这里是一些模仿我的玩具数据(但要小得多/短得多):
message.content
TIA!!!
解决方法
也许是这样的:
p.ch4 <- ggplot(toy,aes(x=date,y=value)) +
geom_line(aes(color=type)) +
geom_point(aes(shape=type,fill=type),color = "black",size=4) +
geom_bar(data=dis,y=discharge*20),inherit.aes = FALSE,stat='identity',alpha=.25) +
scale_shape_manual(name = "Location:",values = c(23:25)) +
scale_fill_manual(name = "Location:",values = c("orange2","olivedrab2","steelblue2")) +
scale_color_manual(name = "Location:","steelblue2")) +
scale_y_log10(sec.axis = sec_axis(trans = ~./20,name = "Discharge (cms)",labels = scales::label_number())) +
labs(y = expression(paste('Methane (',mu,'M)')),x = "",color = "Location",shape = "Location")
print(p.ch4)
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。