微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以有一个对数刻度 y 轴和一个正常的第二个 y 轴吗?

如何解决我可以有一个对数刻度 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)

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?