GGR中有两个y轴的绘图?
我之前问过这个问题,但有人关闭了它,表示它有答案。我很困惑如何将两个变量GGR中有两个y轴的绘图?,r,ggplot2,tidyverse,yaxis,R,Ggplot2,Tidyverse,Yaxis,我之前问过这个问题,但有人关闭了它,表示它有答案。我很困惑如何将两个变量绘制在两个Y轴上。我想在左侧y轴上绘制水平,在右侧y轴上绘制流动(即次轴)。这是我的数据,我希望得到回复 library(tidyverse) library(lubridate) set.seed(1500) FakeData <- data.frame(Date = seq(as.Date("2020-01-01"), to = as.Date("2020-01-31")
绘制在两个Y轴上。我想在左侧y轴上绘制水平,在右侧y轴上绘制流动(即次轴)。这是我的数据,我希望得到回复
library(tidyverse)
library(lubridate)
set.seed(1500)
FakeData <- data.frame(Date = seq(as.Date("2020-01-01"), to = as.Date("2020-01-31"), by = "days"),
Level = runif(31, 0, 30), Flow = runif(31, 1,10))
ggplot(data = FakeData, aes(x = Date))+
geom(aes(y = Level))
库(tidyverse)
图书馆(lubridate)
种子集(1500)
FakeData以下是一个开始:
FakeData <- data.frame(Date = seq(as.Date("2020-01-01"), to = as.Date("2020-01-31"), by = "days"),
Level = runif(31, 0, 30), Flow = runif(31, 1,10))
scale_factor <- 4
ggplot(data = FakeData, aes(x = Date))+
geom_col(aes(y = Level), fill="darkgreen") +
geom_line(aes(y = Flow*scale_factor), color="blue") +
scale_y_continuous(sec.axis = sec_axis(~ .*1, labels = number_format(scale=1/scale_factor), name="Flow"))
FakeData嗨,我现在没有R访问权限,但我想你正在寻找sec.axis参数。。。看看这篇文章()我想它会回答你的问题:)当然,你必须为geom_bar和geom_line使用不同的aes(或者你计划使用的任何东西)。谢谢@Dave,我们正在将流量增加4倍-我们能将其恢复到原始值吗?我尝试了scale\u y\u continuous(sec.axis=sec\u axis(~.*scale\u factor/4,name=“Flow”)
-没有成功。@Hydro,对不起,我需要将比例因子添加到标签中,而不是调整值,请参见上面的编辑。谢谢@Dave,我想我们正在复制您代码中的一些行。它确实帮助解决了我的问题-我现在只需要玩次轴
限制
。有什么建议可以尝试在某些数字之间限制第二个共轴吗?我尝试使用限制=c(0,10)
给了我一个完全不同的尺度。老实说,我不明白秒轴公式是如何工作的。ggplot的设计者们在哲学上不喜欢(这里很礼貌)与第一个轴比例不同的次轴。因此,为什么很难按预期工作。由于次对象是从第一个对象开始缩放的,因此无法设置独立的限制。您可以添加类似于breaks=scale_factor*seq(0,10,2)
的内容来控制记号和标签的位置。