Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaの実践的な紹介 / グラフィックスとサウンド /

1.9.2 プロット仕様の変更

Mathematicaでは,どんな軸スケールを使うかとか,プロットする式のサンプリング点をどこにするかとか,また座標軸をどう描画するかとか,プロットの仕様をいろいろ変更できるようになっている.通常は,Mathematicaにより自動的に採用される設定条件で間に合うが,グラフの用途によっては,仕様を変更した方がよいときもあるだろう.

これはMathematicaの関数全般に関して言えることだが,関数の動作条件を変更するには,「オプション」指定を行う.例えば,プロットの条件を指定するには,Plot式に,書式name->valueで書かれた規則を引数として加える(ここで,nameはオプション名,valueは変更する設定値を示す).何も規則を指定しなければ,「デフォルト値」の規則が使われる.

プロット仕様の変更

Plotのような関数には設定できるオプションが数多くある.普通は,多くても23の項目を変更する程度で事が足りるだろう.プロットを見やすくするには,いろいろと実験してみるのが最善な方法である.例えば,あるオプションに一連の異なった値を設定していったとき,プロットの表示がどうなるかを見ていくとよいだろう.

オプションはプロットごとに指定することができる.また,プロットした後でも,オプションだけを変えて再表示することができるようにもなっている.これについては1.9.3で説明する.

Plot用オプション その1(これらはShowに使える)

オプションをデフォルト値としてプロットする.

In[7]:= Plot[Sin[x^2], {x, 0, 3}]

Out[7]=

今度は,プロット領域の周りに囲み枠を描く.

In[8]:= Plot[Sin[x^2], {x, 0, 3}, Frame->True]

Out[8]=

軸のラベルを指定する.ラベルは,Mathematicaの出力として生成されるときと同じように表示される.ラベルの文字は2重引用符でくくって指定することができる.

In[9]:= Plot[Sin[x^2], {x, 0, 3},
AxesLabel -> {"x value", "Sin[x^2]"} ]

Out[9]=

オプションは複数同時に使用でき,順不同である.

In[10]:= Plot[Sin[x^2], {x, 0, 3}, Frame -> True,
GridLines -> Automatic]

Out[10]=

AspectRatioで縦横比を設定するとグラフの全景が変わる.縦横比は縦幅を横幅で割った比として与えられる.デフォルト値は,長方形では最も見やすいと言われている比で,いわゆる,黄金比の逆数である.

In[11]:= Plot[Sin[x^2], {x, 0, 3}, AspectRatio -> 1]

Out[11]=

オプションの一般的な設定値

自動設定でプロットを行うと,軸と軸のスケールが自動設定され,式の挙動で特に重要と思われる部分だけがプロットされる.もし,プロットする式の値が急激に増加する場合や,特異点が現れる場合は,局所的に式の値が大きくなりすぎて,その部分は自動的にプロット範囲から除外されてしまう.PlotRangeを指定することにより,プロットに入れたい軸と軸の範囲を正確に制御できる.

オプションPlotRangeの設定

PlotRangeを使いの区間を指定する.この指定をすると,曲線の下の部分は表示されなくなる.

In[12]:= Plot[Sin[x^2], {x, 0, 3}, PlotRange -> {0, 1.2}]

Out[12]=

関数の曲線をなるべく滑らかにプロットできるように,Mathematica内部で調整が取られる.つまり,増減の激しい関数に対してはより多くのプロット点が使われる.通常,関数の取る形に応じて関数のサンプリングを「適応」させるが,上限はあり,それ以上の細かさで関数をサンプリングすることはできない.この上限は設定可能なので,必要ならば変更しておく.

において,は無限に増減を繰り返す.増減する区間において,それに見合った点数のサンプリングが試みられるが,サンプリング点は有限であるために関数の挙動が十分に再現されない.このため,曲線がところどころで切れてしまっている.

In[13]:= Plot[Sin[1/x], {x, -1, 1}]

Out[13]=

Plot用オプション その2(注:これらはShowには使えない)

ここで重要なのは,プロットする関数は限られた点数までしかサンプリングできないので,必ずしも関数の特徴を再現できるとは限らない,ということである.もちろん,PlotPointsでプロット点数を増やしておき,もっと多くの点でサンプリングすることは可能である.ただし,そうすると,曲線は滑らかにできるが,プロットする時間も長引かせてしまうことになる.

Plotでは関数が何度も評価されるため,1回の評価にかかる時間をなるべく短くしたい.このため,Mathematicaでは,通常,関数がコンパイルされ,効率よく実行できる低レベルの擬似コードが生成される.しかし,この方法には1つ潜在的な問題がある.それは,擬似コードを使うと機械精度の計算しかできなくなってしまうことにある.このため,機械精度より高い精度を必要とする関数の場合は,Plotの自動コンパイルを禁止にしておく必要があるかもしれない.これは,Compiled -> Falseと設定すればよい.注意してほしいが,Mathematicaは,「インラインコード」しかコンパイルすることができない.このため,例えば,ユーザ定義の関数はコンパイルすることができない.そのような関数に対して高速化が必要な場合は,1.9.1で説明したよう に,Evaluateを使い,関数をあらかじめMathematicaのコンパイラが扱える形に変換しておく必要がある.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.