等高線を描きたい
等高線を描こうと思い立った。(特に何のって目的はない)
どんなツールで描けるのかと調べたら、Excel 2007ではできるらしい。
データを等高線グラフで表示する
Excelでできるなら、OpenOffice.orgでも出来るんじゃないかと思ったけど、OOo Calc 3.2では対応してないようだ。
じゃぁ、どうしようって事で
統計解析向けプログラミング言語のR言語というもので描けるらしいことが分かったので早速インストールして使ってみる。
The R Project for Statistical Computing
あぁぁ・・・コマンドを入力してくのね・・・まぁ「言語」って言うからにはそうなんだろうけど・・・。
先にR言語の参考ページを検索。
R-Tips
とりあえず、Excelのページにあったのと同じデータを等高線表示してみよう。
A | B | C | D | E | F | |
1 | 10 | 20 | 30 | 40 | 50 | |
2 | 0.1 | 15 | 65 | 105 | 65 | 15 |
3 | 0.2 | 35 | 105 | 170 | 105 | 35 |
4 | 0.3 | 55 | 135 | 215 | 135 | 55 |
5 | 0.4 | 75 | 155 | 240 | 155 | 75 |
6 | 0.5 | 80 | 190 | 245 | 190 | 80 |
7 | 0.6 | 75 | 155 | 240 | 155 | 75 |
8 | 0.7 | 55 | 135 | 215 | 135 | 55 |
9 | 0.8 | 35 | 105 | 170 | 105 | 35 |
10 | 0.9 | 15 | 65 | 105 | 65 | 15 |
まずはこのデータをCSVファイル(c:\data.csv)として保存。
読み込ませてみる
> data <- read.table("c:/data.csv")
そしたらエラー
以下にエラー scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
'1' 行目には,7 個の要素がありません
A1に空白があるのがいけないんだろうってことで、A1のところに「0」を追加して再実行したらエラーなし。
早速等高線を描いてみる。
> contour(data)
以下にエラー contour.default(data) : 適切な 'z' 行列が指定されていません
またエラー。
行列のデータじゃないとダメらしいので現在のデータ型を確認
> mode(data)
[1] "list"
listか・・・行列に変換して実行
> data <- as.matrix(data)
> contour(data)
おぉぉ、それっぽい!
3Dタイプ行ってみましょう!
latticeという追加パッケージ?エクステンション?を使うといいらしい
> library(lattice)
> wireframe(data)
> wireframe(data, shade=TRUE)
Excelと遜色ない感じになった。
マウスでぐりぐりできないのは残念だけど、それなりに使えそう。
リアルタイムなメーター系のグラフじゃなければC#とかのコントロールで描くんじゃなくて、外部ツールに出力させるのもアリだな。
(MSChartも等高線に対応してないし)