理工系研究者のための Mac OS X, Windows, Linux メモ
 
ホーム >> UNIX >> R >> 複数のグラフを色分けしてプロットするには
このエントリーをはてなブックマークに追加

複数のグラフを色分けしてプロットするには

作成日:2015.5.5
  1. データをグループ分けする方法
    1. グラフごとに色分け
    2. グラフ内で色分け
  2. オブジェクトごとに指定する方法

データをグループ分けする方法

グラフごとに色分け

複数のグラフを色分けするには,あらかじめデータごとにグループ名を与えます。

  1. x1=seq(0,2*pi,length=20)
  2. y1=sin(x1)
  3. y2=cos(x1)
  4. y3=sin(x1+pi)
  5. df1 <- data.frame(x=x1,y1=y1,group="g1")
  6. df2 <- data.frame(x=x1,y2=y2,group="g2")
  7. df3 <- data.frame(x=x1,y3=y3,group="g3")
そのグループ名(ここでは"g1","g2","g3")をgeom_line関数のaes内のcolorオプションに指定します。
  1. gp = ggplot()
  2. gp=gp+geom_line(data=df1,aes(x=x1,y=y1,color=group))
  3. gp=gp+geom_line(data=df2,aes(x=x1,y=y2,color=group))
  4. gp=gp+geom_line(data=df3,aes(x=x1,y=y3,color=group))
そして最後に,各グループ名と色の対応を書いて描画します。
  1. gp=gp+scale_color_manual(name="Function",values=c("g1"="red","g2"="blue","g3"="green"))
  2. print(gp)

グループごとに凡例が作成されます。凡例のタイトルをscale_color_manual関数のnameオプションで指定できます。

グラフ内で色分け

一つのデータフレーム内のデータを複数のグループに分ければ,一つのグラフを色分けすることもできます。

  1. library(ggplot2)
  2. x1=seq(0,2*pi,length=100)
  3. y1=sin(x1)
  4. df1 <- data.frame(x=x1,y1=y1,group=c(
  5. rep("g1",length(x1)/4),
  6. rep("g2",length(x1)/4),
  7. rep("g3",length(x1)/4),
  8. rep("g4",length(x1)/4)))
  9. gp = ggplot()
  10. gp=gp+geom_line(data=df1,aes(x=x1,y=y1,color=group))
  11. gp=gp+scale_color_manual(name="Parts of Function",
  12. values=c("g1"="red","g2"="blue","g3"="green","g4"="yellow"))
  13. print(gp)

オブジェクトごとに指定する方法

geom_line関数のcolorオプションに色名または色コードを指定することで,グラフの色を指定することができます。

  1. library(ggplot2)
  2. x1=seq(0,2*pi,length=20)
  3. y1=sin(x1)
  4. y2=cos(x1)
  5. y3=sin(x1+pi)
  6. df1 <- data.frame(x=x1,y1=y1)
  7. df2 <- data.frame(x=x1,y2=y2)
  8. df3 <- data.frame(x=x1,y3=y3)
  9. gp = ggplot()
  10. gp=gp+geom_line(data=df1,aes(x=x1,y=y1),color="red") # colorオプションで色指定
  11. gp=gp+geom_line(data=df2,aes(x=x1,y=y2),color="blue")
  12. gp=gp+geom_line(data=df3,aes(x=x1,y=y3),color="green")
  13. print(gp)
ここでは,aes関数ではなくgeom_line関数のcolorオプションに指定していることに注意。 このオプションには色名か色コードしか指定できません。 さらにこの場合には凡例は作成されません。