折れ線グラフ

折れ線を描くとき lines 関数を利用すると便利である。

折れ線グラフ

折れ線に描くデータとして、ラットの体重データを利用する(サンプルデータ)。サンプルデータは、ラットに PF 餌、C 餌、G 餌を与えて、7 日間の体重を記録したものである。いずれの実験群においても 5 個体である。

# データの読み込み
x <- read.table("http://stat.biopapyrus.net/data/rat.food.txt", header = TRUE)
head(x, 10)
##    type Day0 Day1 Day2 Day3 Day4 Day5 Day6 Day7
## 1    PF  200  203  195  192  187  185  184  178
## 2    PF  200  187  175  165  183  178  176  172
## 3    PF  208  197  209  199  198  190  186  185
## 4    PF  208  194  202  197  194  192  192  187
## 5    PF  212  200  210  199  188  192  188  185
## 6     C  192  211  223  232  243  248  258  266
## 7     C  208  218  229  235  246  257  265  273
## 8     C  208  203  217  231  242  248  257  260
## 9     C  210  214  227  235  251  252  263  290
## 10    C  211  222  233  244  253  266  274  285

すべてのデータを折れ線として描く

各個体それぞれの体重遷移を折れ線グラフに描く例。

xaxis <- 1:ncol(x[, -1])          # x 軸座標を設定
cols <- c("red", "blue", "green") # PF を赤色、C を青色、G を緑色

# 描画の準備
plot(0, 0, type = "n", xlim = range(xaxis), ylim = range(x[, -1]),
     xlab = "Date", ylab = "Weight")

# 各個体のデータを折れ線として描く
type <- unique(x[, 1])            # 餌の種類を取得
for (i in 1:nrow(x)) {
  lines(xaxis, x[i, -1], col = cols[c(1:length(cols))[type == x[i, 1]]])
}

# グラフに凡例を書き入れる
legend("topleft", legend = type, lty = 1, col = cols)
lines関数による折れ線グラフ

データの平均値のみを折れ線として描く

各実験群の平均値だけを折れ線グラフに描く例。

xaxis <- 1:ncol(x[, -1])          # x軸座標を設定
cols <- c("red", "blue", "green") # PFを赤色、Cを青色、Gを緑色

# 描画の準備
plot(0, 0, type = "n", xlim = range(xaxis), ylim = range(x[, -1]),
     xlab = "Date", ylab = "Weight")

# 平均値を計算して、追加書き込む
type <- unique(x[, 1])            # 餌の種類を取得
for (i in 1:length(type)) {
  m <- apply(x[x[, 1] == type[i], -1], 2, mean)
  lines(xaxis, m, col = cols[i])
}

# グラフに凡例を書き入れる
legend("topleft", legend = type, lty = 1, col = cols)
lines関数による折れ線グラフ

折れ線グラフにエラーバーを表示する方法

平均値を折れ線グラフとして描き、各点において、エラーバーを表示させる方法です。

xaxis <- 1:ncol(x[, -1])          # x軸座標を設定します
cols <- c("red", "blue", "green") # PFを赤色、Cを青色、Gを緑色の描きます

# 何もない図を作成します
plot(0, 0, type = "n", xlim = range(xaxis), ylim = range(x[, -1]),
     xlab = "Date", ylab = "Weight")

# 平均値と標準偏差を計算して、追加書き込みします
type <- unique(x[, 1])             # 餌の種類を取得
for (i in 1:length(type)) {
  m <- apply(x[x[, 1] == type[i], -1], 2, mean)
  s <- apply(x[x[, 1] == type[i], -1], 2, sd)
  points(xaxis, m, col = cols[i])
  lines(xaxis, m, col = cols[i])
  arrows(xaxis, m + s, xaxis, m - s, angle = 90, length = 0.1, col = cols[i])
  arrows(xaxis, m - s, xaxis, m + s, angle = 90, length = 0.1, col = cols[i])  
}

# グラフに凡例を書き入れます
legend("topleft", legend = type, pch = 1, lty = 1, col = cols)
lines関数による折れ線グラフ

線のプロパティ

lines 関数を利用して折れ線グラフを描くとき、線の色、太さやタイプなどは collty などのオプションで指定できる。

plot(c(0,0), xlim=c(0,10), ylim=c(0,8), type="n")

text(5, 1, 'lwd = 1, lty = "solid", col="black"')
lines(c(1, 10), c(1, 1), lwd = 1 , lty = "solid", col = "black")

text(5, 2, 'lwd = 2, lty = "dashed", col = "red"')
lines(c(1, 10), c(2, 2), lwd = 2, lty = "dashed", col = "red")

text(5, 3, 'lwd = 3, lty = "longdash", col = "green"')
lines(c(1, 10), c(3, 3), lwd = 3, lty = "longdash", col = "green")

text(5, 4, 'lwd = 4, lty = "solid", col = "blue"')
lines(c(1, 10), c(4, 4), lwd = 4, lty = "solid", col = "blue")

text(5, 5, 'lwd = 3, lty = "dotdash", col = "magenta"')
lines(c(1, 10), c(5, 5), lwd = 3, lty = "dotdash", col = "magenta")

text(5, 6, 'lwd = 2, lty = "twodash", col = "yellow"')
lines(c(1, 10), c(6, 6), lwd = 2, lty = "twodash", col = "yellow")

text(5, 7, 'lwd = 1, lty = "dotted", col = "grey"')
lines(c(1, 10), c(7, 7), lwd = 1, lty = "dotted", col = "grey")
lines関数のオプション