Ggplot2 で複数の線をプロットする方法 (例付き)


次の基本構文を使用して、ggplot2 で複数の行をプロットできます。

 ggplot(df, aes(x=x_var, y=y_var)) + 
  geom_line(aes(color=group_var)) +
  scale_color_manual(name=' legend_title ', labels=c(' lab1 ', ' lab2 ', ' lab3 '),
                     values=c(' color1 ', ' color2 ', ' color3 '))

この特定の構文は、ggplot2 に 3 行のプロットを作成します。

この構文は、データ フレームが長い形式であることを前提としています。

次の例は、実際に ggplot2 で複数の行をプロットする方法を示しています。

例: ggplot2 で複数の行をプロットする

R に、3 つの異なる店舗で 5 つの異なる日に行われた販売数に関する情報を含む次のデータ フレームがあるとします。

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5),
                 storeA=c(5, 6, 8, 8, 9),
                 storeB=c(3, 3, 4, 5, 7),
                 storeC=c(8, 10, 12, 12, 17))

#view data frame
df

  day storeA storeB storeC
1 1 5 3 8
2 2 6 3 10
3 3 8 4 12
4 4 8 5 12
5 5 9 7 17

このデータ フレームは現在ワイド フォーマットです。

ただし、 Tidyrパッケージのpivot_longer()関数を使用すると、データを長い形式にすばやく変換できます。

 library (tidyr)

#convert data from wide to long format
df <- df %>% pivot_longer(cols=c(' storeA ', ' storeB ', ' storeC '),
                          names_to=' store ',
                          values_to=' sales ')

#view updated data frame
df

# A tibble: 15 x 3
     day store sales
      
 1 1 blindA 5
 2 1 storeB 3
 3 1 blindC 8
 4 2 blindA 6
 5 2 storeB 3
 6 2 storeC 10
 7 3 storeA 8
 8 3 storeB 4
 9 3 storeC 12
10 4 storeA 8
11 4 storeB 5
12 4 storeC 12
13 5 storeA 9
14 5 storeB 7
15 5 storeC 17

関連: R の pivot_longer() の概要

データ フレームが長い形式になったので、ggplot2 で次の構文を使用して各店舗の売上をプロットできます。

 library (ggplot2)

#plot sales by store
ggplot(df, aes(x=day, y=sales)) + 
  geom_line(aes(color=store)) +
  scale_color_manual(name=' Store ', labels=c(' A ', ' B ', ' C '),
values=c(' red ', ' purple ', ' steelblue '))

個々の行には、各店舗での毎日の売上が表示されます。

線を解釈しやすくするために、 scale_color_manual()関数を使用してプロットの右側にカスタム凡例を作成したことに注意してください。

この関数の引数を自由に変更して、希望通りに表示される凡例を作成してください。

追加リソース

次のチュートリアルでは、ggplot2 で他の一般的なタスクを実行する方法を説明します。

ggplot2 で平均と標準偏差をプロットする方法
ggplot2を使用してプロットに水平線を追加する方法
ggplot2でトレンドラインを引く方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です