Yoshi Nishikawa's Blog

データと知識、その調和平均。

ggplot 2軸でプロットする

ggplot

美麗グラフが気に入っているのだが、そのままでは、左右で異なる軸を提示したいときにうまくいかない。
Rで解析:ggplot2の利便性が向上「plotflow」パッケージを参考にしたら、"plotflow"というパッケージを用いて二軸表示出来るようになった。

データ

日本政府公開データを用いる。 人口推計国民医療費

方法

まずは plotflowパッケージのインストール。

install.packages("devtools")
devtools::install_github("trinker/plotflow")

ggdual_axis関数を用いて描ける。

library("plotflow")

lg<-ggplot(uhc, aes(year)) +
  geom_line(aes(y=iryohi_cho))+
  labs(y="Healthcare expenditure(trillion JPY)")+
  theme_classic()

rg<-ggplot(uhc, aes(year)) +
  geom_line(aes(y = elderly_mil, colour = "red"))+
  labs(y="Elderly population(million)")+
  theme_classic()

ggdual_axis(lg, rg, 270) #左軸に表示させたいデータ、右軸データ、右軸名の回転角度を指定する。

f:id:yoshi_nishikawa:20161019084933p:plain

これでは、右側の軸名がかぶっているので、themeでplot.marginを指定する。

lg<-ggplot(uhc, aes(year)) +
  geom_line(aes(y=iryohi_cho))+
  labs(y="Healthcare expenditure(trillion JPY)")+
  theme_classic()+
   theme(plot.margin = grid::unit(c(.5, 1, .5, 0), "cm"))

rg<-ggplot(uhc, aes(year)) +
  geom_line(aes(y = elderly_mil, colour = "red"))+
  labs(y="Elderly population(million)")+
  theme_classic()+
   theme(plot.margin = grid::unit(c(.5, 1, .5, 0), "cm"))


ggdual_axis(lg, rg, 270)

f:id:yoshi_nishikawa:20161019085109p:plain

今度は上手くいった。ちなみに、赤が高齢者数(100万人)で黒が医療費(1兆円)。
双方、うなぎ登りである。