見出し画像

[Rによるデータ分析入門]ggplotによる図の作成(2)

本コラムではRのグラフ描画パッケージgglot2の使い方を紹介します。Rではtidyverseパッケージに含まれるggplot2パッケージを使うことで綺麗なグラフを描くことができます。第2回は、折れ線グラフの作成方法を紹介します。

なお第1回は以下を参照してください。基本的な使い方と散布図の作成方法について紹介しています。


下準備

ここでは2022年の年齢階級別学歴別男女別賃金データであるwage-census2022.csvを使います。データとスクリプト例は以下からダウンロードできます。

まず、大卒男性の年齢別賃金をグラフにしてみましょう。以下の関数で、まずデータを読み込んでデータの中身を確認してみます。

dataf <- read_csv("wage-census2022.csv")
dataf

このデータには年齢age、月給wage(単位:千円)、勤続年数tenure、男性ダミーmale、教育水準education(1:中卒、2:高卒、3:専門卒・短大・高専、4:大卒以上)という変数が含まれています。

つぎに「大卒男性の年齢別賃金」に限定します。filter()関数でmale==1(男性)かつeducation==4(大卒)に限定します。

# 大卒男性に限定
dataf <- dataf %>% filter(male==1&education==4)
dataf

以下のおとり、male==1(男性)かつeducation==4(大卒)に限定されていることが確認できます。

折れ線グラフの描き方

折れ線グラフは
ggplot(data=データフレーム, aes(x=横軸の変数, y=縦軸の変数))+geom_line()
で描画できます。

以下では、横軸は年齢age、縦軸を賃金(月収)wageとし、geom_point()オプションでデータポイントにマーカーを、theme_classic()で背景を白にしてグラフを作成します。

g_line <-ggplot(data=dataf,aes(x=age,y=wage))+
geom_line()+geom_point()+theme_classic()
g_line

大卒男性の年齢と賃金の関係を示すグラフができました。これを年齢ー賃金プロファイルと呼びます。男性の賃金は50台後半まで上昇しますが、そこから下落していることがわかります。

グループ別に折れ線グラフを描く

wage-census2022.csvには男女別の賃金が含まれていますので、男女別に年齢ー賃金プロファイルを描いてみましょう。下準備として、filter()関数でデータを男女別年齢別の賃金に限定します。

# 男女別賃金のグラフ
dataf <- read_csv("wage-census2022.csv")
# 大卒労働者のデータに限定
dataf <- dataf %>% filter(education==4) 
# 下準備としてmaleをfactorにしておく
dataf <- dataf %>% mutate(male=as.factor(male))

また最後の一行はmaleという変数をas.factor()関数でfactor形式に変更しています。もともとmaleは0/1という数値ですが、factor形式にすることでカテゴリーを示す変数であることをRに認識させます。
そして、グループごとに折れ線グラフを描くにはgroup=オプションを付けます。
ggplot(data=データフレーム, aes(x=横軸の変数, y=縦軸の変数, group=x))+geom_line()
では、さっそく男女別の年齢-賃金プロファイルを見てみましょう。

#グループ別に折れ線グラフを描く、group=x
g_line <-ggplot(data=dataf,aes(x=age,y=wage,group=male))+
geom_line()+geom_point()+theme_classic()
g_line

以下が上記のスクリプトで作成したがグラフです。上が男性、下が女性で、初任給は男女差は小さいものの、女性のほうが賃金の上昇ペースが速いことがわかります。

ただし、これでは2本のグラフのどちらが男女を示すのかがわかりにくいので少しお化粧してみましょう。

色分けする

では手始めに線を色分けしてみましょう。色を指定することもできるのですが、ここではRに自動で色を設定してもらう方法から説明します。具体的にはcolourオプションを付けます。
ggplot(data=データフレーム, aes(x=横軸の変数, y=縦軸の変数, colour=x))+geom_line()

# グループ別に色分けする
g_line <-ggplot(data=dataf,aes(x=age,y=wage,colour=male))+
geom_line()+geom_point()+theme_classic()
g_line

男性が水色、女性がピンクになりました。またグラフの横に凡例(legend、符号の説明)が付きました。

自分で色を指定したい場合はscale_color_manual()オプションを使います。以下の例ではgroup=maleでmaleという変数でグループ分けしていますので、values=c("blue","red")で色を割り当てています。具体的にはmaleの小さい値をとるほう、つまり0(女性)に”blue”を割り当て、1(男性)に”red”を割り当てます。

# マニュアルで色を指定する。
g_line <-ggplot(data=dataf,aes(x=age,y=wage,colour=male))+
geom_line()+scale_color_manual(values=c("blue","red"))+geom_point()+theme_classic()
g_line

Rのグラフで使用できる色については以下のサイトを参照してください。

線の種類を変える

プレゼン資料を作成する際には線の色を変えると見やすくなりますが、論文などで白黒印刷を前提とする資料の場合は線の種類を変えたほうが見やすくなります。この場合は、groupオプションとlinetypeオプションを使います。
ggplot(data=データフレーム, aes(x=横軸の変数, y=縦軸の変数, group=x, linetype=x))+geom_line()

#グループ別に自動で線の種類を変更 linetype
g_line <-ggplot(data=dataf,aes(x=age,y=wage,group=male,linetype=male))+
geom_line(size=1)+geom_point()+theme_classic()
g_line

今度は男性が点線、女性が実線になりました。

次に線の種類を指定してみましょう。この場合、scale_linetye_manualというオプションを使います。以下の例では、maleの小さい値をとるほう、つまり0(女性)に”dashed”(点線)を割り当て、1(男性)に”solid”(実践)を割り当てます。

# 線の種類を指定する
g_line <-ggplot(data=dataf,aes(x=age,y=wage,group=male,linetype=male))+
geom_line()+scale_linetype_manual(values=c("dashed", "solid"))+
geom_point()+theme_classic()
g_line

男性が実線、女性が点線と上のグラフの逆になりました。

線の太さを変更する

線の太さを変更するには、sizeオプションとscale_size_manualオプションを使います。values=c(0.5, 1.5)で、maleの小さい値をとるほう、つまり0(女性)にサイズ0.5の細い線を割り当て、1(男性)にサイズ1.5の太い線を割り当てます。

# 線の太さを指定する
g_line <-ggplot(data=dataf,aes(x=age,y=wage,group=male,size=male))+
geom_line()+scale_size_manual(values=c(0.5, 1.5))+
geom_point()+theme_classic()
g_line


凡例(legend)を変更する

最後に凡例を変更する方法を紹介します。まず、genderという変数を作成し、男性だった”Male”、女性だったら"Female"という文字列をわりあてます。
dataf <- dataf %>% mutate(gender=if_else(male==1,"Male","Female"))
そして、colour=genderと文字列を含む変数を指定すると凡例のところに"Male"と"Female"が付きます。

# 凡例を変更
dataf <- dataf %>% mutate(gender=if_else(male==1,"Male","Female"))
g_line <-ggplot(data=dataf,aes(x=age,y=wage,colour=gender))+
geom_line()+
geom_point()+theme_classic()
g_line

Rのグラフ作成テクニックは奥が深く、ここで紹介したものはごく一部です。ネット上でグラフ作成のテクニックを紹介するものが多数ありますのでいろいろ検索してみるとよいでしょう。

本コラムは「Rによるデータ分析入門」のWEBサポートページとして作成されました。WEBサポートの一覧は以下を参照してください。

WEBサポートの一覧は以下を参照してください。


この記事が気に入ったらサポートをしてみませんか?