|
Graphics`Graphics`
組込み関数のPlot,ListPlot,ParametricPlotを使うと,2Dのほぼすべての標準的なプロットができる.しかし,データや関数を棒グラフや両対数プロットのような特別の形式で表示したい場合もあるだろう.そのようなプロットの作成には,このパッケージに収められた関数を使うとよいだろう.

対数プロット
パッケージをロードする.
In[1]:= << Graphics`Graphics`
以下は の両対数プロットを与える.
In[2]:= LogLogPlot[x^2, {x, 1, 3}]

Out[2]= 
以下において,expdataは-1から1までのランダムなオフセットによる指数データのリストである.
In[3]:= expdata = Table[ {x, .92 10^(.94 x) + Random[Real, {-1.0, 1.0}]}, {x, 0.2, 1.2, .1}]
Out[3]= 
対数プロットでは指数データはほぼ線形となる.
In[4]:= LogListPlot[expdata]

Out[4]= 

極プロット
同一グラフ上に楕円とリマソンをプロットする.
In[5]:= PolarPlot[{4/(2 + Cos[t]), 4 Cos[t] - 2}, {t, 0, 2 Pi}]

Out[5]= 

棒グラフ
Graphics`Graphics`を使うとさまざまな棒グラフが作成できる.各棒グラフの関数はグラフのスタイルをコントロールする多くのオプションを取る.
次は2つのリストを比較する棒グラフである.リストの長さが同じである必要はない.
In[6]:= BarChart[{1, -3, 4, 5, 2, 3}, {3, 6, 4, 3}]

Out[6]= 
次の例では棒が横に並ぶのではなく積み重ねられている.
In[7]:= StackedBarChart[{1, -3, 4, 5, 2, 3}, {3, 6, 4, 3}]

Out[7]= 
各棒の絶対的な高さが等しくなるように棒を重ね合わせた百分位グラフ.
In[8]:= PercentileBarChart[{1, -3, 4, 5, 2, 3}, {3, 6, 4, 3}]

Out[8]= 
次のグラフでは棒の位置が明示的に決められている.
In[9]:= GeneralizedBarChart[ {{1, 3, .2}, {4, 9, 1}, {2.1, -6, .5}}, {{3, 5, .5}, {1.5, -2, 1}, {-.4, 2, .5}}]

Out[9]= 

棒グラフ関数のオプション
棒グラフ関数は特別の棒グラフオプションと標準的なグラフィックスオプションの両方を取る.
次の百分位棒グラフは棒グラフオプションのBarStyleとBarOrientation,それにグラフィックスオプションのAxesとFrameを用いて作られている.
In[10]:= PercentileBarChart[{1,3,-4,5,3.5,3}, {-3,2,5,3}, BarStyle -> {RGBColor[0,1,0], RGBColor[1,1,0]}, BarOrientation -> Horizontal, Axes -> False, Frame -> True]

Out[10]= 

BarChartとGeneralizedBarChartのオプション
BarStyleは,関数BarChartとGeneralizedBarChartを用いて棒の色を決定するために棒の値に適用する関数を指定する.
以下では棒の高さによって,3つの異なった値のいずれかを与える関数BarStyleに従って色付けが行われている.
In[11]:= BarChart[{5, 3, 2, -2, 2, 6}, BarStyle -> (Which[ # > 4, RGBColor[0,1,0], # < 0, RGBColor[1,0,0], True, RGBColor[1,1,0]]&), GridLines -> Automatic ]

Out[11]= 

棒グラフのその他のオプション
次はビジネス用の表の作成にオプションを使った例である.TextStyleのような標準的なオプションでフォントを変更している
In[12]:= BarChart[{1, 3, 4, 5, 3.5, 3}, {3, 2, 5, 3}, BarSpacing -> -.3, BarGroupSpacing -> .5, BarStyle -> {GrayLevel[.6], Hue[0]}, BarEdgeStyle -> {{Dashing[{.01}],Hue[0]},GrayLevel[0]}, BarLabels -> {"Apr","May","Jun","Jul","Aug","Sep"}, PlotLabel -> "Projected and Current Profit, Tourist Season", TextStyle -> {"FontFamily" -> "Helvetica", "FontSize" -> 9} ]

Out[12]= 

PieChartの使用
PieChartは正の数のリストから円グラフを生成する.いくつかのオプションを使って円のスタイルをコントロールする.

PieChartのオプション
オプションのPieStyleとPieLabelsは必要な数のラベルスタイルがない場合は(PlotStyleと同様に)循環的に適用される.PieLineStyleオプションはグラフのすべての線に同じように適用される.PieExplodedは目的の部分をグラフの中央から離れるように移動させる.デフォルト値はNoneで,この場合はどの部分も動かされない.番号ではなく 番号, 距離 のペアを使って円グラフの一部をどのくらい動かすかを指定することができる.各部分には中央右から始まって時計周りに番号が付けられる.
以下では円グラフ,飛び出した円グラフ,部分的に飛び出した円グラフが組み合されている.
In[13]:= DisplayTogetherArray[ PieChart[{.2,.3,.1}], PieChart[{.2,.3,.1}, PieExploded->All], PieChart[{.2,.3,.1}, PieExploded->{{3,.2}}] ]

Out[13]= 
各部分の色は循環的に使うこともできる.
In[14]:= PieChart[{.1, .2, .3, .4}, PieStyle->{ GrayLevel[.3], GrayLevel[.8]}]

Out[14]= 
各部分にラベルを付けることもできる.
In[15]:= PieChart[{12, 21, 18}, PieLabels -> {"Joe", "Helen", "Bob"}, PlotLabel -> "Sales" ]

Out[15]= 

複数のプロットの表示
複数のプロットを生成し,一緒に表示すると便利なことがある.このための一般的な方法はDisplayFunction -> Identityオプションを使って各プロットを別々に生成し,Showを使ってそれらのプロットを一緒に表示するものである.これらの関数はこの操作を自動的に行う.DisplayTogetherにはこの目的のためにShowを用いて組み合せることのできるグラフィックスを生成する入力を与えられなければならない.DisplayTogetherは最終出力に適したオプションも取ることができる.DisplayTogetherArrayも同種の入力を取るが,表示にはGraphicsArrayを用いる.入力プロットコマンドは出力配列の構造にマッチした構造の配列として入力されなければならない.DisplayTogetherArrayはGraphicsArrayに適したオプションを取る.
これは自乗則に従っているランダムなデータセットである.
In[16]:= data = Table[{n/15, (n/15)^2 + 2 + Random[Real,{-.3,.3}]}, {n, 15}];
次は, , , の線形結合をデータにフィットする.
In[17]:= fit = Fit[data, {1, x, x^2}, x]
Out[17]= 
次は, と の線形結合をデータにフィットする.
In[18]:= altfit = Fit[data, {1,x^3}, x]
Out[18]= 
ここでは2本のフィットされた曲線がデータのプロットに結合されている.
In[19]:= DisplayTogether[ Plot[altfit, {x,0,1}, PlotStyle -> Hue[.6]], ListPlot[data, PlotStyle -> {Hue[0], PointSize[.03]}], Plot[fit, {x,0,1}, PlotStyle -> {GrayLevel[0], Dashing[{.03}]}] ]

Out[19]= 
先程横1列に並べた円グラフが,ここでは異なった配置になっている.グラフのコマンドがDisplayTogetherArrayに入力された際の配列構造が,出力におけるグラフの並べ方に反映されている.
In[20]:= DisplayTogetherArray[ {{PieChart[{.2,.3,.1}], PieChart[{.2,.3,.1}, PieExploded -> All]}, {PieChart[{.2,.3,.1}, PieExploded->{{3,.2}}]} } ]

Out[20]= 

ListPlotのバリエーション
Graphics`Graphics`は多数のListPlotの変型も実装する.この中にはデータプロットのラベル付けやデータにエラーバーを付ける関数などが含まれる.パッケージGraphics`MultipleListPlot`にはこれらのプロットに代るものや,データのプロットに使われる点の変型などが含まれる.
以下ではデータがPiの各桁の数字を使って定義されている.
In[21]:= data = First[RealDigits[N[Pi]]]
Out[21]= 
Piの各桁の数字が整数 をプロットの記号として使ってプロットされている.
In[22]:= TextListPlot[data]

Out[22]= 
次も同じプロットであるが,ここでは整数 がプロットの記号ではなくラベルになっている.
In[23]:= LabeledListPlot[data]

Out[23]= 
次は誤差の大きさ をexpdataの各データペアに付けた新しいリストを作成する.
In[24]:= erexpdata = Map[Append[#, 1.0]&, expdata]
Out[24]= 
エラーバー付きのexpdataのデータのプロットである.
In[25]:= errorp = ErrorListPlot[erexpdata]

Out[25]= 
複数データセットを取ったり点と点の間に線を引いたりできるその他のプロット方法については,パッケージGraphics`MultipleListPlot`ご覧いただきたい.

Histogramを使う
Histogramはカテゴリ化したデータの度数をプロットするために用いられ,棒の太さが各カテゴリを定義する区間の幅に比例し,棒の高さがそのカテゴリのデータの度数に比例する棒グラフを作成する.FrequencyData -> TrueとするとHistogramに与えられるデータはカテゴリ化できる生データではなく,HistogramCategoriesオプションによって指定されたカテゴリと関連のある度数データであることになる.
以下で正規分布の擬似乱数を生成するパッケージをロードする.
In[26]:= Needs["Statistics`NormalDistribution`"]
次は平均値がゼロ,分散が単一である正規分布のデータである.
In[27]:= normdata = RandomArray[NormalDistribution[], 100];
Histogramは単純な数で定義された区間を選んでカテゴリを自動的に決定する.
In[28]:= Histogram[normdata]

Out[28]= 
次は居住年数が 年の住民数のデータセットである.カテゴリーは , , , , である.
In[29]:= countdata = {6, 39, 30, 27, 24};
HistogramCategoriesオプションを使うと切捨てのリストで指定されたヒストグラムのカテゴリが指定できる.棒の幅が同じではない場合,同数密度を表すために棒の高さは棒の幅でスケールされる.
In[30]:= Histogram[countdata, FrequencyData->True, HistogramCategories -> {0, 1, 5, 10, 20, 50}]

Out[30]= 

ヒストグラムの特別オプション
HistogramCategoriesオプションの可能な設定値はAutomatic,正の整数 ,切捨てリストのいずれかである.こらが整数 に設定されると区間の幅は等しくなり,HistogramRangeオプションで指定された区間をカバーする.ApproximateIntervals -> Falseとすると,ヒストグラムは厳密に 個のカテゴリを持つが,ApproximateIntervals -> Trueの場合は区間の境界を単純な数によって表現するためにカテゴリの数が調整されることがある.
HistogramRangeオプションの可能な値は全データをヒストグラムに含むAutomaticと,データの上限と下限を含むように指定する min, max である.
HistogramScaleオプションの可能な値はAutomatic,True,正の数 のいずれかである.Automaticの場合,棒の幅が等しくない場合を除き高さを棒の幅でスケールすることはない(こうすると度数密度が得られる).HistogramScale -> Trueの場合,棒の幅に関係なく度数密度が得られる.HistogramScale -> の場合は棒の面積の総和が となるように棒の高さがスケールされる.HistogramScale -> 1とするとデータの確率密度関数の近似プロットが与えられる.
以下ではHistogramCategoriesが正規分布のデータのカテゴリ化に使われる切捨てを指定している.Ticks -> IntervalCentersと設定すると区間の中央に目盛が置かれ,HistogramScale -> 1とするとヒストグラムの面積が単一になるようにプロットがスケールされる.
In[31]:= Histogram[normdata, HistogramCategories -> {-3.6, -2.4, -1.4, -.6, 0, .6, 1.4, 2.4, 3.6}, Ticks -> IntervalCenters, HistogramScale -> 1]

Out[31]= 
度数データのヒストグラムをカテゴリを指定せずにプロットすると, , という具合にカテゴリの幅が同じになる.
In[32]:= Histogram[countdata, FrequencyData->True]

Out[32]= 
Histogram関数はBarEdges,BarEdgeStyle,BarStyle,BarOrientationのような特別のヒストグラムオプションや特別の棒グラフオプションを取る.また,Ticksのように標準的なグラフィックスオプションも取る.HistogramはTicksのの特別設定であるIntervalBoundariesとIntervalBoundariesを取る.

HistogramのTicksオプションの設定
|