所以我试图在一张图中编译多个数据框。对于我的x值,我有天数,对于y,我有事情发生的频率。 我的问题是,数据帧(df3)的范围从0到3,其他的范围从0到50。
虚拟数据框:
day<-c(1,2,3)
b<-c(23,44,22)
c<-c(12,35,49)
d<-c(1,1,3)
df1<-data.frame(day,b)
df2<-data.frame(day,c)
df3<-data.frame(day,d)
ggplot()+
geom_line(data=df1, aes(x=day, y=df1$`b`), color="red") +
geom_line(data=df2, aes(x=day, y=df2$`c` ), color="green")+
geom_line(data=df3, aes(x=day, y=df3$`d` ), color="blue")+
labs(x="Days", y="Number of occurrences")
这很好用,但是我想为df1和df2创建一个不同的比例,为df3创建另一个比例。
更新:
我正在尝试此操作,但是它会覆盖以前的比例:
d<-ggplot()+
geom_line(data=df1, aes(x=day, y=df1$`a`), color="red") +
geom_line(data=df2, aes(x=day, y=df2$`b` ), color="green")+
scale_y_continuous(limits=c(0, 50))+
labs(x="Days", y="Number of occurrences")
d+geom_line(data=df3, aes(x=day, y=df3$`c` ), color="blue")+
scale_y_continuous(limits=c(0, 3))
答案 0 :(得分:2)
我认为您可以使用sec.axis
的{{1}}参数来实现:
ggplot2
请注意,我在您的代码上添加了这一行:
d<-ggplot()+
geom_line(data=df1, aes(x=day, y=df1$`1`), color="red") +
geom_line(data=df2, aes(x=day, y=df2$`1` ), color="green")+
scale_y_continuous(limits=c(0, 50))+
labs(x="Days", y="Number of occurrences")
d+geom_line(data=df3, aes(x=day, y=df3$`1` ), color="blue")+
scale_y_continuous(limits=c(0, 3),
sec.axis = sec_axis(~ . *scale_of_the_new_axis, name = "name of the new axis")
)
编辑:
我对 df3 的数据进行了变换,然后应用了逆变换,使 df3 的实际值反映在新轴上。>
sec.axis = sec_axis(~ . *scale_of_the_new_axis, name = "name of the new axis")
让我知道这是否是您想要的。