層別に散布図 属性ごとに色分け

概要

・2系列の散布図を書く.その際に,データの属性に応じてマーカーのデザインとマーカーの色を変える

モチベーション

・例えば2つの株式の日次終値があったとしてその散布図を書くとする.各年ごとの動きを色分けしたいという場面を考える.
・エクセルでも散布図を色分けができるが,その場合はちょっと面倒(後述)
・散布図の色分けの方法はRのデフォルトで入っているirisデータフレームを用いた例ばっかりでいまいち良く分からない

元データ

1

A列に日付,B列にyahooの株価終値,C列にgoogleの株価終値,D列にyear関数を使ってA列の年だけを取得しています.
B-C列で散布図を書くとちょっと不思議な形をしておりまして,まあ年ごとに層別すれば何か見えるかなあと分かる感じ(― ―)

エクセルでやる場合

2

すこし分かりづらいですが,年毎にgoogleの列だけずらして記入すれば一応所望の散布図を書くことは出来ますが非常にめんどくさい.
しかも空いているセルに何かしらが記入されていると散布図が崩れる(空白,0,NA()が記入されていてもダメなのでExcel関数でどうにかできる問題でもない)

そうだRでやろう

たった2行で所望の散布図を書くことができます.R結婚してください

3

1行目はcsvを読み込ませているだけなので割愛
2行目のplot関数で散布図を書いています.
まず第1,第2引数は系列の名前なのでGOOGとYHOOですね.
第3引数はpchを指定しています.これはマーカーの形でして,形に対して数字が割り当てられています.

参考
R-Source – 53. グラフィックスパラメータ(弐)
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/53.html

2007年のデータに対して「0」が割り当てられたマーカーを対応させたいので,pchにyear列から2007を引いた値をインプットしています.

第4引数では色を指定しています.
今回は7年分のデータなのでまずrainbow()関数を使って7色のRGBを取得.
rainbow()を呼ぶとRGBが格納されたベクトルが帰ってきますので,yearの値を使って1から順番に指定

Rで時系列のデータを思うように操る道は険しい(― ―)