Rで、以下に示すように複数系列のカラフルな線グラフを書き、凡例をつける。
ページの最後にまとめてコピペできるテキストがあります。
データを用意する。
とりあえず、行列(マトリックス)を適当につくる。
data.l <- round(sin(seq(0,18*pi,length=90))*seq(1,3,1),digits=3)
data.m <- matrix(data.l, ncol=9, byrow=T)
> data.m
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0.000 1.187 2.866 0.944 1.129 -0.106 -0.622 -1.930 -2.796
[2,] -0.535 0.141 1.946 0.974 1.837 1.515 -0.106 -1.350 -2.944
[3,] -0.904 -0.949 0.422 0.701 1.975 2.666 0.443 -0.351 -2.177
[4,] -0.992 -1.744 -1.233 0.210 1.499 2.988 0.854 0.757 -0.734
[5,] -0.772 -1.997 -2.505 -0.346 0.557 2.383 1.000 1.630 0.937
[6,] -0.312 -1.630 -3.000 -0.794 -0.557 1.037 0.835 1.997 2.317
[7,] 0.245 -0.757 -2.562 -0.996 -1.499 -0.631 0.411 1.744 2.977
[8,] 0.726 0.351 -1.329 -0.889 -1.975 -2.103 -0.141 0.949 2.713
[9,] 0.981 1.350 0.317 -0.505 -1.837 -2.921 -0.649 -0.141 1.606
[10,] 0.932 1.930 1.865 0.035 -1.129 -2.833 -0.955 -1.187 0.000
つくった行列をデータフレームにする。
data.df <- data.frame(data.m)
> data.df
X1 X2 X3 X4 X5 X6 X7 X8 X9
1 0.000 1.187 2.866 0.944 1.129 -0.106 -0.622 -1.930 -2.796
2 -0.535 0.141 1.946 0.974 1.837 1.515 -0.106 -1.350 -2.944
3 -0.904 -0.949 0.422 0.701 1.975 2.666 0.443 -0.351 -2.177
4 -0.992 -1.744 -1.233 0.210 1.499 2.988 0.854 0.757 -0.734
5 -0.772 -1.997 -2.505 -0.346 0.557 2.383 1.000 1.630 0.937
6 -0.312 -1.630 -3.000 -0.794 -0.557 1.037 0.835 1.997 2.317
7 0.245 -0.757 -2.562 -0.996 -1.499 -0.631 0.411 1.744 2.977
8 0.726 0.351 -1.329 -0.889 -1.975 -2.103 -0.141 0.949 2.713
9 0.981 1.350 0.317 -0.505 -1.837 -2.921 -0.649 -0.141 1.606
10 0.932 1.930 1.865 0.035 -1.129 -2.833 -0.955 -1.187 0.000
行と列の値を定義する。
group <- paste("group",seq(1,9,1),sep=" ")
num <- seq(1,10,1)
> group
[1] "group 1" "group 2" "group 3" "group 4" "group 5" "group 6" "group 7" "group 8" "group 9"
> num
[1] 1 2 3 4 5 6 7 8 9 10
データフレームに行と列の名前を与える。
colnames(data.df) <- group
rownames(data.df) <- num
> data.df
group 1 group 2 group 3 group 4 group 5 group 6 group 7 group 8 group 9
1 0.000 1.187 2.866 0.944 1.129 -0.106 -0.622 -1.930 -2.796
2 -0.535 0.141 1.946 0.974 1.837 1.515 -0.106 -1.350 -2.944
3 -0.904 -0.949 0.422 0.701 1.975 2.666 0.443 -0.351 -2.177
4 -0.992 -1.744 -1.233 0.210 1.499 2.988 0.854 0.757 -0.734
5 -0.772 -1.997 -2.505 -0.346 0.557 2.383 1.000 1.630 0.937
6 -0.312 -1.630 -3.000 -0.794 -0.557 1.037 0.835 1.997 2.317
7 0.245 -0.757 -2.562 -0.996 -1.499 -0.631 0.411 1.744 2.977
8 0.726 0.351 -1.329 -0.889 -1.975 -2.103 -0.141 0.949 2.713
9 0.981 1.350 0.317 -0.505 -1.837 -2.921 -0.649 -0.141 1.606
10 0.932 1.930 1.865 0.035 -1.129 -2.833 -0.955 -1.187 0.000
色の種類と、色が出る順番を定義する。
color.set <- c(rgb(seq(1,0.5,-0.25),0,0),rgb(0,seq(1,0.5,-0.25),0),rgb(0,0,seq(1,0.5,-0.25)))
> color.set
[1] "#FF0000" "#BF0000" "#800000" "#00FF00" "#00BF00" "#008000" "#0000FF" "#0000BF" "#000080"
プロットする。matplot()なら複数の行を扱える。plotで上書きするより楽。
matplot(data.df,type="l",lty=1,lwd=3,col=color.set,ylim=range(-3,9))
凡例(レジェンド)に与える座標を定義する。
x.value <- 1
y.value <- 9
> x.value
[1] 1
> y.value
[1] 9
凡例を追加する。
legend(x.value,y.value,legend=group,lty=1,lwd=3,col=color.set)
以下を与えれば、まとめて実行できる。
data.l <- round(sin(seq(0,18*pi,length=90))*seq(1,3,1),digits=3)
data.m <- matrix(data.l, ncol=9, byrow=T)
group <- paste("group",seq(1,9,1),sep=" ")
num <- seq(1,10,1)
colnames(data.df) <- group
rownames(data.df) <- num
color.set <- c(rgb(seq(1,0.5,-0.25),0,0),rgb(0,seq(1,0.5,-0.25),0),rgb(0,0,seq(1,0.5,-0.25)))
matplot(data.df,type="l",lty=1,lwd=3,col=color.set,ylim=range(-3,9))
x.value <- 1
y.value <- 9
legend(x.value,y.value,legend=group,lty=1,lwd=3,col=color.set)
0 件のコメント:
コメントを投稿