そのため、1つのグラフに複数のデータフレームをコンパイルしようとしています。 xの値には日数があり、yの値には何かが発生する頻度があります。私の問題は、データフレーム(df3)の1つが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))
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")
)
コードに次の行を追加したことに注意してください。
sec.axis = sec_axis(~ . *scale_of_the_new_axis, name = "name of the new axis")
編集:
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")
これがあなたが望むものであるかどうか私に知らせてください。