所以我试图在一个图中编译几个数据框。对于我的 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")
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我想为 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))
Run Code Online (Sandbox Code Playgroud)
sec.axis
我认为你可以使用以下参数来做到这一点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")
)
Run Code Online (Sandbox Code Playgroud)
请注意,我在您的代码中添加了这一行:
sec.axis = sec_axis(~ . *scale_of_the_new_axis, name = "name of the new axis")
Run Code Online (Sandbox Code Playgroud)
编辑:
我对df3的数据应用了变换,然后应用变换的逆变换以使df3的实际值反映在新轴上。
ggplot()+
geom_line(data=df1, aes(x=day, y=b), color="red") +
geom_line(data=df2, aes(x=day, y=c ), color="green")+
geom_line(data=df3, aes(x=day, y=d*50/3), color="blue")+
scale_y_continuous(limits=c(0, 50),
sec.axis = sec_axis(~ . *3/50, name = "name of the new axis"))+
labs(x="Days", y="Number of occurrences")
Run Code Online (Sandbox Code Playgroud)
让我知道这是否是您想要的。
归档时间: |
|
查看次数: |
14373 次 |
最近记录: |