折れ線グラフ

折れ線グラフは lines(x, y, type=) 関数で作成する。x, yには数値ベクトルが入り、プロットする点の座標を指定する。それが線で結ばれて折れ線グラフになる。
type= 引数については以下のとおり。

type description
p points。点のみ。
l lines。線のみ。
o overplotted points and lines 。点と線を重ねる。
b, c 点と線の組み合わせ。"b"は線が点の背後になる。"c"は点がなくなる。
s, S 階段で線を描く。小文字のときは水平線から、大文字のときは垂直線から。
h ヒストグラムふうの垂線。
n 点も線も描画しない。

lines( ) 関数はグラフに線の情報を加えるもので、グラフそれ自体を作るものではない。グラフをつくるには plot() 関数を使う。
plot()関数はデフォルトだと点のみを描画する。type="n"とオプションを指定すれば、プロット点や線なしで軸やタイトルを含めたグラフが作成できる。
以下にtypeオプションの例を示す。plot関数内でtype="n"としてからlines()関数で点と線の描画を指定する。

x <- c(1:5); y <- x # create some data
par(pch=22, col="red") # plotting symbol and color
par(mfrow=c(2,4)) # all plots on one page
opts = c("p","l","o","b","c","s","S","h")
for(i in 1:length(opts)){
  heading = paste("type=",opts[i])
  plot(x, y, type="n", main=heading)
  lines(x, y, type=opts[i])
}

lines options without points click to view

plot関数内でtypeを指定せず、lines()関数で点と線の描画を指定する。

x <- c(1:5); y <- x # create some data
par(pch=22, col="blue") # plotting symbol and color
par(mfrow=c(2,4)) # all plots on one page
opts = c("p","l","o","b","c","s","S","h")
for(i in 1:length(opts){
  heading = paste("type=",opts[i])
  plot(x, y, main=heading)
  lines(x, y, type=opts[i])
}

lines options with points click to view

赤いほうはplot関数内でtype="n"としたため、基本的に点が描画されない。 lines関数で点を描くオプション (type=p, o, b) のときのみ描かれる。
対して、青いほうは全て点を描画している。

以下、より複雑なグラフ。5つのオレンジの樹の成長を時間にそってプロット。それぞれの線が樹の種類をあらわす。データはOrangeデータセットから。


# 因子変数を数値変数にする。扱いやすいので。
Orange$Tree <- as.numeric(Orange$Tree)
ntrees <- max(Orange$Tree)

# x軸とy軸の範囲を取得する。
xrange <- range(Orange$age)
yrange <- range(Orange$circumference)

# プロット開始
plot(xrange, yrange, type="n", xlab="Age (days)",
   ylab="Circumference (mm)" )
colors <- rainbow(ntrees)
linetype <- c(1:ntrees)
plotchar <- seq(18,18+ntrees,1)

# add lines
for (i in 1:ntrees) {
  tree <- subset(Orange, Tree==i)
  lines(tree$age, tree$circumference, type="b", lwd=1.5,
    lty=linetype[i], col=colors[i], pch=plotchar[i])
}

# タイトルとサブタイトル
title("Tree Growth", "example of line plot")

# 凡例
legend(xrange[1], yrange[2], 1:ntrees, cex=0.8, col=colors,
   pch=plotchar, lty=linetype, title="Tree")


# 同じグラフを matplot() 関数で。
mat <- matrix(0, nr=7, nc=5)
for (i in 1:ntrees) {
    x <- subset(Orange, Tree==i)$circumference
    mat[,i] <- x
  }
mat
matplot(mat, type="b", col=colors, pch=plotchar, lty=linetype)
legend(x=1, y=200, 1:ntrees, cex=0.8, col=colors, pch=plotchar, lty=linetype, title="Tree")
# x軸がうまくかけない。matplotはx軸が因子 (グループとか) のときに使うのがいいだろう。x軸が数値 (連続変量) のときはplot() + lines()。

line chart click to view