グラフィックス指示子とグラフィックスオプション

グラフィックスオブジェクトを作成するには,通常,構成要素を列記したリストを与える.また,リストにグラフィックス指示子を加えておけば,指示子に続く要素をどう描画したらよいかを指示することができる.

グラフィックスオブジェクトは普通ネストしたリストの集合体として与えられる.このとき,各サブリストは描画要素を表す.グラフィックス指示子をこのような集合体に与えると,指示子を加えたリストにおいて,指示子に続くすべての要素(要素がサブリストであればその要素も)が指示子の影響を受ける.しかし,リストの外まで影響は及ばない.

先頭のサブリストにグラフィックス指示子GrayLevelを加え,明暗度を指定しておく.
In[1]:=
Click for copyable input
Out[1]=
表示すると,最初のサブリストだけがGrayLevelで指定された明暗度で描画される.
In[2]:=
Click for copyable input
Out[2]=
GrayLevel[i]グレースケール幅0(黒)から1(白)のグレー値で明暗度を指定する
RGBColor[r,g,b]赤緑青の各原色についてそれぞれ0から1で色合いを指定する
Hue[h]幅0から1で色調 h を指定する
Hue[h,s,b]幅0から1で色調,飽和度,明暗度を指定する

描画色の指定に使う基本機能

Wolfram言語は多くの色の名前を直接色指定として受け入れる.RedGrayLightGreenPurple等の色は,評価してRGBColor指定となる変数として実装される.色の名前は色指示子と互換に使うことができる.

最初のプロットは色の名前で,2つ目のプロットは微調整されたRGBColor指定である.
In[3]:=
Click for copyable input
Out[3]=

書式Hue[h]を使うと1つのパラメータで色調指定ができ便利である.h で指定する色調値は0から1の値を取る.Hue[h]の値の範囲は赤,黄色,緑,水色,青,紫,そして再び赤に戻る色の輪に対応している.さらに,拡張書式Hue[h,s,b]を使えば,色調だけでなく,色の飽和度と明暗度も指定できる.飽和度1で「原色」が得られ,0に減少していくと「あせた色」が得られる.

RGBColor等のグラフィックス指示子は一度指定したら,その時点から,指定に続く同じリスト内の全要素に適用される.このような無差別に作用する指示子に対して,特定のグラフィックス要素だけに作用する指示子もある.

例えば,PointSize[d]がその一例である.この指示子をグラフィックスオブジェクトに適用すると,すべてのPoint要素が直径 d の円として描画されるようになる.PointSizeでは,直径 d はプロット領域の幅を1としたときの相対的な割合で表す.

さらに,指示子AbsolutePointSize[d]を使えば絶対単位で直径を指定することができる.1ポイントはインチでプリンタの1ポイントにほぼ等しい.

PointSize[d]すべての点要素を直径 d(相対値で,プロット領域幅に対する割合)で描く
AbsolutePointSize[d]すべての点要素を直径 d(絶対値で,単位はポイント)で描く

点のグラフィックス指示子

点要素のリストを作っておく.
In[4]:=
Click for copyable input
Out[4]=
各点を,プロット領域の幅の10分の1の直径を持つ円として描かせる.
In[5]:=
Click for copyable input
Out[5]=
今度は,3ポイントの絶対サイズを指定する.
In[6]:=
Click for copyable input
Out[6]=
Thickness[w]すべての線を w の太さで描く(太さ値は相対値で,プロット領域幅に対する割合)
AbsoluteThickness[w]すべての線を w の太さで描く(太さ値は絶対値で,単位はポイント)
Dashing[{w1,w2,}]すべての線を破線として描く(破線の区間 , , は相対値で指定する)
AbsoluteDashing[{w1,w2,}]すべての線を破線として描く
CapForm[type]すべての線に,指定されたタイプのキャップを使う
JoinForm[type]すべての線に,指定されたタイプの継ぎ目を使う

線のグラフィックス指示子

太さを変えた線のリストを作る.太さを絶対値で指定する.
In[7]:=
Click for copyable input
Out[7]=
描画してみる.
In[8]:=
Click for copyable input
Out[8]=

Dashingの描画指定を行うと任意な形の破線が引ける.破線を引く基本的なやり方は短い実線区間と空の区間を交互に繰り返すことである.区間の長さを変えることで破線の形を変える.また,Dashingでは実線の区間と空の区間の単純パターンだけでなく,複雑な区間の組合せパターン(例えば,一点鎖線)を構成することも可能である.

一定の長さの線分をつなげて,破線を引いてみよう.
In[9]:=
Click for copyable input
Out[9]=
点と破線区間を連ねて,一点鎖線を引いてみよう.
In[10]:=
Click for copyable input
Out[10]=
Dashingは空リストを指定することで無効にすることができる.ここでは2つ目の線に対してのみDashingが無効になっている.
In[11]:=
Click for copyable input
Out[11]=

数値サイズ指定を必要とするグラフィックス指示子はTinySmallMediumLarge等の値をとることもできる.各指示子に対して,これらの値は微調整されており,人間の目に適した外観を生成するようになっている.

以下は太さは大で破線間隔は中が指定されている.
In[12]:=
Click for copyable input
Out[12]=
以下ではすべてのマルチポイントで大きい緑色の点を使うよう指定されている.
In[13]:=
Click for copyable input
Out[13]=

CapForm指示子を使うと,線の両端に付けるキャップを指定することができる.キャップの形はとすることができる.

以下はCapFormで利用可能な異なる形状を示す.
In[14]:=
Click for copyable input
Out[14]=

CapForm["Butt"]では線が厳密にその終点で終了することを指定する.というキャップは線の終点から線の幅の二分の一だけはみ出した形となる.キャップは線の幅を直径とする半円である.

またJoinForm指示子を使うと,線分間の継ぎ目の形を指定することができる.

JoinFormでは次のような形状が利用できる.
In[15]:=
Click for copyable input
Out[15]=
JoinForm[{"Miter",d}]線の幅のほぼ d 倍だけ接合を拡張する

斜め接合の最大の長さを指定する

隣接する線分同士の角度が小さい場合,斜め接合の点は非常に長くなることがある.過剰に長い点は,デフォルトで面取りされた接合に切り取られる.これが起る長さ,斜め接合限界は,5つの頂点の星の点は鋭いがそれより鋭い接合は面取りされるよう設定されている.この限界はJoinFormを使って指定し,厳密にいつ鋭い接合を面取りするかを制御することができる.斜め接合の限界は,接合における点が面取りされる前に,接合の頂点を超えることを許されている線の幅の数である.

この7つの頂点の星の点は,デフォルトの斜め接合限界により切り取られている.
In[16]:=
Click for copyable input
Out[16]=
斜め接合の限界を明示的に大きく指定すると,各頂点が鋭くなる.
In[17]:=
Click for copyable input
Out[17]=
RoundingRadius->r角を半径 r で丸めるよう指定する

RectangleRoundingRadiusオプション

Rectangleプリミティブの角はRoundingRadiusオプションで丸めることができる.これは長方形の角の半径を指定するオプションである.実際の丸まり方は,隣接する辺の半分の長さに制限されている.

以下は長方形の角の丸め方のいろいろな例である.
In[18]:=
Click for copyable input
Out[18]=

グラフィックス指示子の使い方の1つは,グラフィックスオブジェクトの構成要素であるグラフィックスプリミティブのリストに直接挿入し局所的に適用させる使い方である.しかし,場合によっては,もっと大域的な描画指定を使いたい.例えば,特定のグラフィックス要素に指示子を適用し,その要素がどこで現れても描画指定を有効にしたい.これは,いわゆる要素の描画スタイルを設定することに相当する.次の表のグラフィックスオプションを使いスタイルを指定することができる.また,各オプションにはスタイルを実際に形作るグラフィックス指示子が割り当てられる.

PlotStyle->stylePlotで描く全曲線に対してスタイルを指定する
PlotStyle->{{style1},{style2},}Plotで描く曲線に順番にスタイルを指定する
MeshStyle->style密度・面グラフにおけるメッシュに対してスタイルを指定する
BoxStyle->style3Dグラフィックスにおけるプロット境界域を示すボックスに対してスタイルを指定する

スタイル定義・設定用のグラフィックスのオプション

すべての曲線が同じスタイルを使うよう指定されたプロットを生成する.
In[19]:=
Click for copyable input
Out[19]=
それぞれの曲線に特定のスタイルを与えるように,異なるPlotStyle式を使うことができる.
In[20]:=
Click for copyable input
Out[20]=

「スタイル設定のオプション」がいくつか用意されているので,それらを使いプロットするときに特定の描画要素をどう表示するかを指定することができる.さらに,プロット全体の描画様式を決めるオプションも用意されている.

Background->colorプロットで使う表示面の背景色を指定する
BaseStyle->colorプロットに対するベーススタイルを指定し,PlotStyleの影響を受けない要素に影響を与える
Prolog->gプロット開始前に描画するグラフィックスを与える
Epilog->gプロット終了後に描画するグラフィックスを与える

プロット全体の描画様式を決めるグラフィックスオプション

背景色を灰色にして曲線をプロットする.
In[21]:=
Click for copyable input
Out[21]=
白をデフォルトの色に指定し,再表示する.
In[22]:=
Click for copyable input
Out[22]=