目次

前提

Rで図を描くということ

例えば散布図を描く、というタスクは次のように細分化される。それぞれを要素作業と呼ぶ。

これらの作業は

に分かれる。すると、総所要時間はこのように積み上げて計算される。

サブタスク要素時間工数所用時間
グラフエリアを初期化するa1a
グラフエリアを分割するa1a
枠を描くb44b
軸の目盛りを描くb2k2kb
軸の目盛りに数字を描くd2k2kb
軸のラベルを描くc22b
グラフのタイトルを描くd1b
グラフのサブタイトルを描くd1b
レコード数分だけの点を描くcnnc
合計 10+4k+n2a+(4+2k)b+nc+(2+2k)d

この総所要時間は、aからdまでの要素時間の桁がそれほど違わないという前提を置くと、nが多くなればなるほど nc の項が支配的となる。 実際にはこれら以外に、打点数が多ければ多いほど、バッファも多く必要とするので、n^2に比例して総所要時間はこれよりも長くなる。

この前提で、各種のグラフィックスデータの挿入方法を比較してみると、次の通り。

出力方法転送されるデータ再描画と再表示の対応
画面描画Rのグラフィックスデバイス打点しなおし
コピー & ペースト (Windows)描画手順のオブジェクト(Windowsメタファイル)打点しなおし
コピー & ペースト (Mac)描画手順のオブジェクト(TIFF)打点しなおし
EPSファイル描画手順のプログラム(PostScript言語)打点しなおし
JPEGファイル決めた大きさの画像データ(JPEG圧縮)画像のピクセル数分の点
BITMAPファイル決めた大きさの画像データ(圧縮なし)画像のピクセル数分の点
TIFFファイル決めた大きさの画像データ(TIFF)画像のピクセル数分の点

再描画が「打点しなおし」となる手段は、レコード数が大きく、図を構成するグラフィックス要素(打点、折れ線、面など)がレコード数nやn^2に比例する場合には、 張り込んだときの画面の描画、編集中にスクロールして画面の外に消えて、また戻ってきたときの再描画、印刷をするときのプリンタデータへの変換時、プレゼンテーションのときにその図が使われているページを表示するキーを押した瞬間から表示が完了するまで、などあらゆる機会で何度も何度も同じ時間を必要とすることになる。

折れ線グラフの場合

nアイテムの時系列グラフを描く、というタスクは次のように細分化される。それぞれを要素作業と呼ぶ。

これらの作業は

に分かれる。すると、総所要時間はこのように積み上げて計算される。

サブタスク要素時間工数所用時間
グラフエリアを初期化するa1a
グラフエリアを分割するa1a
枠を描くb44b
軸の目盛りを描くb2k2kb
軸の目盛りに数字を描くd2k2kb
軸のラベルを描くc22b
グラフのタイトルを描くd1b
グラフのサブタイトルを描くd1b
k時点間の折れ線グラフを描くbnknkb
合計 10+4k+n2a+(4+2k+nk)b+(2+2k)d

この総所要時間は、aからdまでの要素時間の桁がそれほど違わないという前提を置くと、nが多くなればなるほど、また時点数kが多くなればなるほど nkb の項が支配的となる。 実際にはこれら以外に、打点数が多ければ多いほど、バッファも多く必要とするので、n*kもしくは(n*k)^2に比例して総所要時間はこれよりも長くなる。