読者です 読者をやめる 読者になる 読者になる

ルビスコくん空を飛ぶ

大学院生(M2)の日記です.日記に加えてプログラム(R)のメモ書きもします.

パッケージggplot2による2軸表示

R

先日,Rのパッケージggplot2のグラフ2軸機能 - ルビスコくん空を飛ぶでggplot2ではグラフの2軸は表示できないという記事を書いたが,どうやらできるようになったらしい.「plotflow」パッケージをインストールするために,以下のようなコマンドを打ち込む.

f:id:pam715:20160626112506p:plain

では,以下に例を示す.今回用いるデータは,Rに標準装備されているデータセットairqualityで,横軸に5月1日から数えた日数,左の軸に大気中オゾン濃度,右の軸に気温(華氏)をおいて,二種類のデータをプロットすることを目的とする.

まずはairqualityの概観から.Ozone

f:id:pam715:20160626121434p:plain

library(plotflow) #パッケージを読み込む

fonts <- theme(axis.text.x = element_text(size=15),axis.text.y = element_text(size=15),
legend.position=c(0.9, 0.9), legend.text=element_text(size=20)) + theme_bw() #ggplotの設定いろいろ

airquality$Day2 <- 1:length(airquality$Day) #5月1日からの日数をつくる

TwoGGPlot <- ggplot(airquality, aes(x = Day2, y = Ozone))
Ozoneplot <- TwoGGPlot + geom_line() + ylim(0, 200) + fonts

TwoGGPlot2 <- ggplot(airquality, aes(x = Day2, y = Temp))
Tempplot <- TwoGGPlot2 + geom_line(aes(colour="red")) + ylim(0, 100) + fonts

ggdual_axis(lhs = Ozoneplot, rhs = Tempplot) #最後にggdual_axis()を入力.lhsは左軸,rhsに右軸にしたいグラフを入力すると次のようなグラフが表示される.

f:id:pam715:20160626122545p:plain

ちなみに,本題とは関係ないですが気温と大気中オゾンには正の相関が見られます.

ggplot(airquality, aes(x = Temp, y = Ozone)) + geom_point() + fonts + stat_smooth(method = "lm", se=F)

f:id:pam715:20160626123026p:plain