R言語のggplot2で散布図を描くには?

 Rのggplot2で散布図を描きます。

要約

 Rでこんな散布図が描けます。

パッケージの準備

 ggplot2はRにもともと入っている機能ではありません。インストールして、呼び出しする必要があります。

install.packages("ggplot2") #インストール(初回のみ)
library(ggplot2) #読み出し(RStudio起動のたびに)

散布図

(1)練習用データ

 練習用のデータをランダムに生成します。

X <- rnorm(n=100, mean =3, sd=1)   #100個の正規分布に従う変数作成
u <- rnorm(n=100, mean =0, sd=3)   #100個の正規分布に従う変数作成
d <- c(rep(0,50),rep(1,50))   #0を50個、1を50個生成
category <- c(rep("type_A",50),rep("type_B",50)) #type_Aを50個、type_Bを50個生成
Y  <- 6+d*3+ 0.5*X+ 2*d*X+ u #YをX,d,uを用いて生成
data0 <- data.frame(X,Y,d,category) #データフレーム化

(2)基本形

 散布図は次のコードで出力できます。

ggplot(data0, aes(x = X,y=Y)) + #データdata0を使用。縦軸にX、横軸にY
  geom_point() #点のプロット

 その結果が下図です。

(3)回帰直線

 散布図に回帰直線を引きたいときは、つぎのコードです。

ggplot(data0, aes(x = X,y=Y)) +
  geom_point()+
  stat_smooth(method = "lm",se=F) #回帰直線、se=Fは95%信頼区間を非表示という意味。Tにすると、表示される。

 その結果が下です。

色分け

 カテゴリごとに色分けしたい場合があるでしょう。

ggplot(data0, aes(x = X,y=Y)) +
  geom_point(aes(colour=category))

 その結果が下図です。

綺麗な散布図

綺麗な散布図を出力します。コードは、解説つきと解説なしを載せましょう。

ggplot(data0, aes(x = X,y=Y)) + #白紙のキャンパスを作成
  geom_point( aes(colour=category))+ #色分け
  scale_x_continuous(limits = c(0, 6),breaks = seq(0,6,1))+ #横軸を0から6に指定。目盛りは0から6まで、1ずつ。
  scale_y_continuous(limits = c(0, 30),breaks = seq(0,30,5))+ #横軸を0から30に指定。目盛りは0から30まで、5ずつ。
  stat_smooth(method = "lm", formula='y~x',se = T, aes(color=category), size = 1)+ #回帰直線を引く。95%信頼区間を表示
  xlab("説明変数") +  #横軸ラベル
  ylab("目的変数") +  #縦軸ラベル
  ggtitle ("散布図") +  #タイトルラベル
  theme_minimal(base_family = "HiraKakuPro-W3") #日本語指定
ggplot(data0, aes(x = X,y=Y)) + 
  geom_point( aes(colour=category))+
  scale_x_continuous(limits = c(0, 6),breaks = seq(0,6,1))+
  scale_y_continuous(limits = c(0, 30),breaks = seq(0,30,5))+
  stat_smooth(method = "lm", formula='y~x',aes(color=category), size = 1)+
  xlab("説明変数") + 
  ylab("目的変数") + 
  ggtitle ("散布図") +
  theme_minimal(base_family = "HiraKakuPro-W3")

 その結果が下図です。

コメント欄 お気軽にコメントをお寄せください!

タイトルとURLをコピーしました