Symfoware

Symfowareについての考察blog

R言語 複数の折れ線を同じグラフに表示する

R言語で同じプロットエリアに複数の折れ線を描画してみます。

こちらを参考にさせて頂いています。
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/49.html



通常の折れ線グラフ



普通の折れ線グラフの描画はこんなかんじでした。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. x <- 1:10
  3. y <- 1:10
  4. # plot関数でデータを配置
  5. plot(x, y, type="o")
  6. graphics.off()



478_01.png


何も考えず、別のグラフを追記してみます。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. x <- 1:10
  3. y <- 1:10
  4. # plot関数でデータを配置
  5. plot(x, y, type="o")
  6. a <- 10:1
  7. b <- 1:10
  8. plot(a, b, type="o")
  9. graphics.off()




後から描画した内容で上書きされます。

478_02.png




par関数



par()を使用して、グラフィックスパラメーターに
グラフの追記を指示すれば良いそうで。
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/52.html


2つ目のグラフを描画する前に
par(new=T)
を指定して、上書きするようプログラムを修正します。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. x <- 1:10
  3. y <- 1:10
  4. # plot関数でデータを配置
  5. plot(x, y, type="o")
  6. a <- 10:1
  7. b <- 1:10
  8. # グラフの上書き指定
  9. par(new=T)
  10. # 2つ目の折れ線グラフを描画
  11. plot(a, b, type="o")
  12. graphics.off()




一見狙い通りの描画に見えますが、X軸とY軸の名称が重なっています。

478_03.png



最初のグラフの軸名非表示



軸の名称が重なってしまう問題を解決するため、最初のグラフを描画するとき
ann=F
を指定して、軸名称を描画しないようにします。

annについてはここで学びました。
R言語 折れ線グラフを画像ファイルに出力する


合わせて、2つ目のグラフを出力するとき、xlab、ylabで軸の名称を明示してみます。
修正したプログラムはこのようになりました。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. x <- 1:10
  3. y <- 1:10
  4. # plot関数でデータを配置
  5. # ann=Fで軸名非表示を指定
  6. plot(x, y, type="o", ann=F)
  7. a <- 10:1
  8. b <- 1:10
  9. # グラフの上書き指定
  10. par(new=T)
  11. # 2つ目の折れ線グラフを描画
  12. # xlab,ylabで軸の名称を明示
  13. plot(a, b, type="o", xlab="X軸の名称", ylab="Y軸の名称")
  14. graphics.off()




狙い通りのグラフが得られました。

478_04.png



同様の手法で、3つのグラフの重ね書きも行えます。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # 1つ目のグラフ
  3. x <- 1:10
  4. y <- 1:10
  5. # plot関数でデータを配置
  6. # ann=Fで軸名非表示を指定
  7. plot(x, y, type="o", ann=F)
  8. # 2つ目のグラフ
  9. a <- 10:1
  10. b <- 1:10
  11. # グラフの上書き指定
  12. par(new=T)
  13. # 2つ目の折れ線グラフを描画
  14. # ann=Fで軸名非表示を指定
  15. plot(a, b, type="o", ann=F)
  16. # 3つめのグラフ
  17. l <- 1:10
  18. m <- c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6)
  19. # グラフの上書き指定
  20. par(new=T)
  21. # xlab,ylabで軸の名称を明示
  22. plot(l, m, type="o", xlab="X軸の名称", ylab="Y軸の名称")
  23. graphics.off()




478_05.png

しかし、軸がなんだかずれています。
次はこれを修正します。





グラフの重ねあわせ



グラフを重ねあわせると軸がずれてしまいました。
これを修正するためにxlim,ylimを指定し、描画範囲を明示します。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # 1つ目のグラフ
  3. x <- 1:10
  4. y <- 1:10
  5. # plot関数でデータを配置
  6. # ann=Fで軸名非表示を指定
  7. # xlim,ylimを指定し描画範囲を明示
  8. plot(x, y, type="o", ann=F, xlim=c(0, 10), ylim=c(0, 10))
  9. # 2つ目のグラフ
  10. a <- 10:1
  11. b <- 1:10
  12. # グラフの上書き指定
  13. par(new=T)
  14. # 2つ目の折れ線グラフを描画
  15. # ann=Fで軸名非表示を指定
  16. # xlim,ylimを指定し描画範囲を明示
  17. plot(a, b, type="o", ann=F, xlim=c(0, 10), ylim=c(0, 10))
  18. # 3つめのグラフ
  19. l <- 1:10
  20. m <- c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6)
  21. # グラフの上書き指定
  22. par(new=T)
  23. # xlab,ylabで軸の名称を明示
  24. # xlim,ylimを指定し描画範囲を明示
  25. plot(l, m, type="o", xlab="X軸の名称", ylab="Y軸の名称", xlim=c(0, 10), ylim=c(0, 10))
  26. graphics.off()




これで狙い通りの結果が得られました。

478_06.png




色やプロットの形状を変更



R言語 プロットの形状、大きさ、色を指定する
R言語 折れ線グラフの色、線の種類、太さを指定する
ここで覚えたテクニックを使用して、折れ線の種類をそれぞれ変更してみます。

グラフの色はcol=[色情報]
プロットタイプはpch=[番号]

で指定するのでした。



  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # 1つ目のグラフ
  3. x <- 1:10
  4. y <- 1:10
  5. # plot関数でデータを配置
  6. # ann=Fで軸名非表示を指定
  7. # xlim,ylimを指定し描画範囲を明示
  8. plot(x, y, type="o", ann=F, xlim=c(0, 10), ylim=c(0, 10),
  9.     col=rgb(1,0,0), pch=0)
  10. # 2つ目のグラフ
  11. a <- 10:1
  12. b <- 1:10
  13. # グラフの上書き指定
  14. par(new=T)
  15. # 2つ目の折れ線グラフを描画
  16. # ann=Fで軸名非表示を指定
  17. # xlim,ylimを指定し描画範囲を明示
  18. plot(a, b, type="o", ann=F, xlim=c(0, 10), ylim=c(0, 10),
  19.     col=rgb(0,1,0), pch=1)
  20. # 3つめのグラフ
  21. l <- 1:10
  22. m <- c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6)
  23. # グラフの上書き指定
  24. par(new=T)
  25. # xlab,ylabで軸の名称を明示
  26. # xlim,ylimを指定し描画範囲を明示
  27. plot(l, m, type="o", xlab="X軸の名称", ylab="Y軸の名称",
  28.     xlim=c(0, 10), ylim=c(0, 10), col=rgb(0,0,1), pch=2)
  29. graphics.off()




だいぶいい感じのグラフが書けるようになってきました。

478_07.png


R言語 掲載記事のまとめ
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/10/06(月) 23:18:25|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<R言語 グラフに凡例を表示する(legend) | ホーム | R言語 折れ線グラフの色、線の種類、太さを指定する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1502-d3e67793
この記事にトラックバックする(FC2ブログユーザー)