ggplot-2

ggplot (ggplot2) では色々なグラフがかけるけど、基本概念は「レイヤー構造」で作る、という事。

イメージは photoshop や illustrator のレイヤーと似てる。

 

ggplot()
でグラフ作りを始め、

aes()
でx, y 軸などを決定し、

その上に追加要素としてレイヤーを重ねていくイメージ。

r-ggplot-1

 

できたグラフは

ggsave()
で出力する。

ggplot の基本概念

Data と Aesthetics (aes)

基本的には、

ggplot(データ, aes(x = x軸に使う要素、y = y軸に使う要素))
でグラフが作れる。

それ以降のレイヤーは、「+」でつなげていく。

Geometries (gomes)

Geometries は、グラフの種類を決める。

棒グラフ、箱ひげ、バイオリンプロット、折れ線 etc. 色々なグラフが作れる。

Statistics (stat)

stat は geom と同じ様に使われる事が多いけど、より specific に指示を与える時に使う。

見た目より統計によってグラフを変化させたい時など。

Position adjustment (position)

棒グラフをグループ毎に並べるかどうかとか、プロットの散らばり具合をどうするかとか、位置に関する事。

Annotations (annotation)

リフェレンスラインを作ったり、マップを作ったりする場合などに使用。

Scales (scale)

軸ラベル、レジェンド、タイトルなど。

カラーやプロットの形などもここで指定。

Facets (facet)

グラフをあるグループ毎に分けて複数のグラフにして表示する場合に使用。

Coordinates (coord)

x と y の aesthetics をどう見せるか。

デフォルトは Cartesian (cood_cartesian())。

例えばx軸とy軸をひっくり返したり、地図に反映させたりする場合などに使用。

Theme

全体のテーマ。背景をどうするか、エレメントをどうするか etc.

実例

例えば、下記のようなコードを書くと、

ggplot(Data, aes(x=MMSEtoDeath, y=MMSETotal, fill=Group)) +                      # 基本のデータと aesthetics
    geom_line(alpha=0.05, aes(group = INDDID, color=Group), size=0.7) +          # geometries: ラインのカラーやサイズなど
    geom_point(shape=21, size=0.5, alpha=0.05, aes(fill=Group, color=Group)) +   # geometries: 背景のプロットの大きさや透明度など
    geom_smooth(method = "gam", se=T, size=1.5, aes(color=Group))                # geometries: ラインのスムージング
    scale_x_reverse() +                                                          # x軸をひっくりかえす
    ylim(0,30) +
    theme_bw() +                                                                 # テーマを bw() に
    labs(x="Time from MMSE to Death (years)", y="MMSE (max=30)") +               # x軸とy軸のラベル
    scale_fill_manual(values = c("#2980B9","#154360","#CB4335", "#641E16", "#F39C12","#7E5109")) +     # グラフの塗りのカラー
    scale_color_manual(values = c("#2980B9","#154360","#CB4335", "#641E16", "#F39C12","#7E5109")) +    # グラフの線のカラー
    facet_wrap(~Cohort) +                                                                              # Cohortの要素毎にグラフを分ける
    theme(strip.background = element_blank())
ggsave(filename = "cognitive decline.eps")                                                             #グラフを EPS ファイルで出力

こんな感じのグラフができる ↓

ggplot-2
にほんブログ村 科学ブログ 脳科学へ
にほんブログ村 子育てブログ ワーキングマザー育児へ

References