内科のメモ帳

ずぼらな覚え書き

ユーザ用ツール

サイト用ツール


apps:r:ggplot2

ggplot2 {R}

  • Grammer of Graphics による記載.
    • グラフの要素を重ねるようにして記載していく
  • データ,グラフの形,軸をそれぞれ指定する

グラフの形の指定方法

geom_density()
密度
geom_histogram()
ヒストグラム
geom_boxplot()
箱ひげ図
geom_bar()
棒グラフ(データのカウントをする)
geom_col()
棒グラフ(データの数を集計させず生データのまま縦軸にする)
geom_point()
散布図
geom_jitter()
重なる点を横に広げる

軸ラベルの指定方法

+ labs("タイトルラベル", "X軸ラベル", "Y軸ラベル")
  • 具体例
ggplot(msleep, aes(X, Y) +   #ggplotで読み込むデータセット,x軸,y軸指定
  geom_point(aes(shape=Z, color=Z)) +    #散布図を指定,形と色を決める変数も指定
  labs(title = "XとYの関係",   #タイトルの指定
       x = "X[(kg)]",        #x軸ラベルの指定
       y = "Y[時間]")         #y軸ラベルの指定

軸ラベルを回転させて重ならなくする

  • X軸が長すぎる名前のときなど,以下のように回転させれば解決できる
+scale_x_discrete(guide = guide_axis(angle=45))

凡例の編集

  • 凡例 = Legend
  • 凡例ラベルは以下のようにして指定する
scale_color_discrete(
  name ="その凡例ラベルの名前"  #diamond の例であれば clarity など
  labels ="それぞれのカテゴリに対応した名前"  #clarity だと I1,SI2,SI1,VS2,VS1,VVS2,VVS1,IFの7段階
  breaks ="上記のカテゴリのレベル"           #どの順で提示するかを指定する
  )
  • colorではなくfillを使って凡例表示をしているときは,
    scale_fill_discrete()

凡例ラベルを削除する

  • guide=FALSE を入れれば凡例ラベル自体を消すことも可能
+ scale_fill_discrete(guide = FALSE)

Themeを指定する

+theme_bw()
+theme_classic()
+theme_dark()
+theme_gray()
+theme_light()
+theme_linedraw()
+theme_minimal()
  • 色々見た目があるので,好きにいじればよい
    • themeは最後の行の実行で上書きしていくスタイルになるので,上記のような固定テーマは最初に指定した上で,凡例の位置を調整するとよい
    • 逆パターンだと,凡例ラベルの位置を調整しても,固定テーマによって所定の位置に上書きされる
  • パッケージで “ggthemes” を入れると,さらに選択の幅が広がる
install.packages("ggthemes")
library(ggthemes)

凡例の位置を調整する

+ theme(legend.position = "bottom")   #凡例を下に
+ theme(legend.position = "right")    #凡例を右に(初期設定)
+ theme(legend.position = "top")      #凡例を上に
+ theme(legend.position = "left")     #凡例を左に
+ theme(legend.position = c(1,1))      #凡例を右上に
+ theme(legend.position = c(0.5,0.5))  #凡例をグラフのど真ん中に(邪魔)
+ theme(legend.position = c(0,0))      #凡例を左下に

具体例

  • 以下は具体的なコード

散布図の具体例

  • 初めから入っている “diamonds” のデータセットを用いる
  • 以下のようにすればX軸にカラット数,Y軸に値段,色をダイヤのカラーで指定できる
    • aes は aesthtetic に由来する
ggplot(data = diamonds) + 
  geom_point(
    mapping = aes(x = carat,y = price,color = color)
  )

  • 同じことは以下のようにも指定できる
gg <- ggplot(diamonds, aes(carat, price))
gg + geom_point(aes(color = cut))
  • なお散布図などでは,shape=() を使うことでプロットの点を分類することも可能
    • factor型の変数に用いることを推奨(形の種類は限られるため)

箱ひげ図

  • ダイアモンドの色と値段の関係を箱ヒゲ図にする場合,以下のようにする
gg <- ggplot(diamonds, aes(color, price))
gg + geom_boxplot(aes(fill=clarity, color = clarity))
  • fillは箱の塗りつぶし,colorは外枠の色.同じもので指定すれば塗りつぶしになる
apps/r/ggplot2.txt · 最終更新: 2023/10/16 by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki