グラフィックスオブジェクトの構造
「グラフィックスとサウンド」において,
Plotと
ListPlot等のプロット関数の使い方を説明した.ここでは,プロット関数で生成したグラフィックスが
Mathematica 内部でどのような形式で保管されているか,また,より複雑なグラフィックスを作成するには
Mathematica をどのようなプログラムしたらよいかを説明していく.
基本的にグラフィックスはプリミティブ(基本単位)の集合体である.これはすべてのグラフィックスで共通である.プリミティブとはグラフィックスの各基本要素に当たる
Point,
Line,
Polygon等のオブジェクトのことである.また,
RGBColor,
Thicknessの指示子もプリミティブに当たる.
| Out[1]= |  |
|
グラフィックスを InputForm(入力形)に変換し,グラフィックスが内部でどう表現されているか見てみる.グラフィックスプリミティブである Pointの座標で各データ点が表されており,また,グラフィックス設定値も与えられている.
Out[2]//InputForm= |
| |  |
|
グラフィックスとして自立する要素は,グラフィックスオブジェクトとして扱われる.グラフィックスオブジェクトには各型に応じていくつか種類があり,そのひとつひとつには型を指定する頭部が付いている.
グラフィックスオブジェクトの種類
「グラフィックスとサウンドオブジェクトの構造」で説明した
Plotや
ListPlot等のプロット関数はすべてグラフィックスオブジェクトを組み合せることで最終的に表示するグラフィックスを構成している.
ユーザ定義のグラフィックスオブジェクトを組み合せ,上記以外のグラフィカルイメージが作成できる.さらに,グラフィックスオブジェクトも式として表すので,標準的な
Mathematica の関数を使いグラフィックスをいろいろ操作できる.
グラフィックスオブジェクトは,
Mathematica フロントエンドにより,出力の際のグラフィックスとして自動的にフォーマットされる.グラフィックスは
Printコマンドを使った2次的出力として出力されることもある.
Graphicsオブジェクトは Mathematica で計算されるが,その出力はセミコロンを使うことで表示されない.
| Out[3]= |  |
|
Printコマンドを使うと,2次的出力が生成できる.その場合は2次的出力であるため, Out[]ラベルは付かない.
| Out[4]= |  |
|
| Show[g, opts] | 新しいオプションをopts で指定して,グラフィックスオブジェクトを表示する |
| Show[g1,g2,...] | g1 からのオプションを使って,いくつかのグラフックスオブジェクトを組み合せて表示する |
| Show[g1,g2,...,opts] | 新しいオプションをopts で指定していくつかのグラフィックスオブジェクトを表示する |
グラフィックスオブジェクトの描画
Showは,既存のグラフィックスのオプションを変更するため,あるいは複数のグラフィックスを組み合せるために使うことができる.
| Out[5]= |  |
|
これは Showで2つのグラフィックスを組み合せる. PlotRangeおよび他のオプションに使われる値は,最初のグラフィックスに設定された値に基づいている.
| Out[6]= |  |
|
ここでは,グラフィックス全体に対して新しいオプションが指定されている.
| Out[7]= |  |
|
グラフィックス変更のための局所的手法と大域的手法
グラフィックスプリミティブをもとにしたグラフィックスの作成では,普通,各種の修正操作を繰り返すことで最終的な形を得る.
Mathematica では修正作業のため2つの方法が用意されている.そのひとつは,グラフィックスにグラフィックス指示子を与える方法である.グラフィックス指示子をグラフィックスプリミティブのリストに加えると,指示内容が続くグラフィックス要素に適用される.すると,グラフィックス単位で描画要素をどう表示するか指定できるようになる.グラフィックス指示子の一例に
RGBColorがある.
Polygonグラフックスプリミティブを含む2Dのグラフックスオブジェクトを生成する.
| Out[8]= |  |
|
Out[9]//InputForm= |
| |  |
|
| Out[10]= |  |
|
グラフィックス指示子を与えることで,特定の描画要素をどう表示したらよいかを指定することができる.しかし,多くの場合,グラフィックス全体の構図等の設定は大域的に変更したい.設定を変更するにはグラフィックスオプションを使う.
グラフィックスオプション Frameを加えることで,グラフィックス全体の見栄えを修正することができる.
| Out[11]= |  |
|
Out[12]//InputForm= |
| |  |
|
Showではグラフィックスオプションを指定できる.オプションの設定値をいろいろ変えながら同じプロットデータをもとにグラフィックスをいろいろと再表示でき,違った描画条件下でグラフィックスがどう映るかをすばやく見ていけるので便利である.
注意点として,
Showの返すグラフィックスオブジェクトは表示したままのものである.つまり,
Showで設定条件を変更した場合,変更した条件も
Showの返すオブジェクトに入る.このため,再度同じオブジェクトに
Showを使うと,設定条件を変更しない限り,前と同じ仕様で表示されることになる.新たに設定値を指定すれば,もとの値は上書きされる.
| Options[g] | グラフィックスオブジェクトに指定されている全オプションの値をリストアップする |
| Options[g,opt] | 指定されている特定オプションの値を出力する |
グラフィックスオブジェクトに付随したグラフィックスオプションの参照
グラフィックスオプションの中には,グラフィックスを生成する関数を可視化するオプションとして使えるものもある.右辺に
Automaticを取ることのできるオプションは,可視化関数により特定の値へと分解されることがある.
| Out[13]= |  |
|
Mathematica は結果のグラフィックスの PlotRangeに対する明示的な値を計算するために,内部アルゴリズムを使う.
| Out[14]= |  |
|
| FullGraphics[g] | グラフィックスオプションによって仕様を指定したオブジェクトをプリミティブとしてリスト形式で出力する |
グラフィックス構成の詳細参照
グラフィックスオプションを指定すると,
Mathematica は指定された通りに,軸等のオブジェクトを自動的に描画する.
Axesがよい例である.オブジェクトはグラフィックスプリミティブの特定のリストによってではなく,オプション値によってのみ表される.これらのオブジェクトをグラフィックスプリミティブのリストとして表すことは,ときに有用なものである.関数
FullGraphicsはオプションを使わずに,特定のプロットを生成するのに必要なグラフィックスプリミティブのリストを生成する.
| Out[15]= |  |
|
Out[16]//Short= |
| |  |
|