等高線を描きたい

等高線を描こうと思い立った。(特に何のって目的はない)
どんなツールで描けるのかと調べたら、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も等高線に対応してないし)