« MySQL4.x以降のMemory(Heap)型テーブル | メイン | LimeSurvey 1.82+ »

2009年5月25日 (月)

ラベル付きの散布図

かつてラベル付きの散布図を作ろうとしたら、意外に作業が面倒で驚いた記憶があるけれど、最近では少し事情が変わってきている模様。現在のソフトならば、昔(5~10年前)ほどは苦労せずに、散布図を作成できるようだ。以下、簡単にメモ。

今回は次のようなサンプルデータを用いる。後半の4つのケースが散布図の中央に密集するので、その4つのラベルをどう処理するかがポイントになる。

Scdata
サンプルデータ

Excelでは、そもそも、散布図にラベルをふることができない。マクロを使えばラベルをふることができるが、下図のように、中央の密集部分のラベルはそのまま重なってしまう。

Scexcel
Excelでは密集部分のラベルが重なってしまう

それに対して最近(ver. 16以降?)のSPSSでは、「グラフ」→「インタラクティブ」→「散 布図」というコマンドを使うと、ラベル位置の自動調整を行ってくれる。下の図をクリックして拡大すると、ラベル同士が重ならないように、位置が調整されて いることが分かるだろう。もともと高価な上に、毎年バージョンアップをして更新料金を徴収することを試み、しかも最近は「PASW」という(SPSSより も大して良いとは思えない)名称に改名するなど、もうひとつ好きになりきれないところもあるソフトだが、バージョンアップごとに一応進歩しているようだ。

Scspsso Scspssr
SPSSであればラベル位置を自動調整してくれる

もちろんSPSSのような高価なソフトを使わなくても、フリーソフトウェアでも同じことを行える。統計計算とグラフィックスのための環境「R」では、以下のコマンドで同様のプロットを行える。※ただし、事前に「maptools」というパッケージをインストールしておく必要がある。

# データの読み込み
d <- read.csv( file.choose(), header=T, row.names=1 )
# パッケージの読み込み
library(maptools)
# プロット
plot(d, pch=16)
pointLabel(x=d[,1], y=d[,2], labels=rownames(d), cex=0.8)

最初のコマンドを実行すると、ファイルを選択するためのダイアログボックスが開くので、このエントリの一番上に示したサンプルデータ(をCSV形式で保存したファイル)を選択する。そして残りのコマンドを実行すれば、以下のようなプロットが作成される。

Scr
Rでもラベル位置の自動調整が可能

Rの場合、乱数で初期値を決めているためか、コマンドを実行するたびに自動調整の結果が変化する。自動調整の結果が気に入らなければ、最後の2行の コマンドを実行し直すことで、気に入った結果が得られるまで自動調整をやり直すことができる。また、プロット上で右クリックして「メタファイルにコピー」 をクリックすると、Word等に貼り付けできる。

なお、RにしてもSPSSにしても、データが激しく密集している場合は、どうしてもラベル同士が重なってしまうことがある。それをも回避したい場合 には、RやSPSSによって作成したグラフをAdobe Illustratorのようなソフトで編集すると良いだろう。最終的にはIllustrator上の「手作業」で修正することになっても、ある程度は役 立つ「たたき台」を作ってくれるという点で、RやSPSSの自動調整は役立つだろう。

トラックバック

このページのトラックバックURL:
http://app.blog.eonet.jp/t/trackback/411818/19915981

ラベル付きの散布図を参照しているブログ:

コメント

コメントを投稿