Main Content

fcontour

等高線をプロット

説明

fcontour(f)は、シンボリック式f(x,y)の等高線をxおよび y の既定の区間[-5 5]でプロットします。

fcontour(f,[min max])は、fを区間min<x<maxおよびmin<y<maxでプロットします。

fcontour(f,[xmin xmax ymin ymax])は、fを区間xmin<x<xmaxおよびymin<y<ymaxでプロットします。関数fcontoursymvarを使用して、変数を並べ替え、区間を割り当てます。

fcontour(___,LineSpec)は、LineSpecを使用してライン スタイルと色を設定します。fcontourはマーカーをサポートしません。

fcontour(___,Name,Value)は、1 つ以上のName,Value引数ペアを使用して、ラインのプロパティを指定します。このオプションは、前述の構文のすべての入力引数の組み合わせで使用できます。Name,Valueペアの設定はプロットされたすべてのラインに適用されます。個々のプロットにオプションを設定するには、fcontourによって返されるオブジェクトを使用します。

fcontour(ax,___)は、現在の axes オブジェクトgcaではなく axes オブジェクトaxにプロットします。

fc= fcontour(___)は、関数等高線オブジェクトを返します。このオブジェクトを使用して、特定の等高線図のプロパティのクエリと変更を行います。詳細は、FunctionContour のプロパティを参照してください。

シンボリック式の等高線をプロット

sin ( x ) + cos ( y ) の等高線を既定区間 - 5 < x < 5 および - 5 < y < 5 にプロットします。カラー バーを表示します。等高線の色とカラー バーの値を一致させて、等高線のレベルを判定します。

symsxyfcontour(sin(x) + cos(y)) colorbar

Figure contains an axes object. The axes object contains an object of type functioncontour.

シンボリック関数の等高線のプロット

f ( x , y ) = sin ( x ) + cos ( y ) の等高線を既定区間 - 5 < x < 5 および - 5 < y < 5 にプロットします。

symsf(x,y)f(x,y) = sin(x) + cos(y); fcontour(f)

Figure contains an axes object. The axes object contains an object of type functioncontour.

プロット区間の指定

プロット区間をfcontourの 2 番目の引数に与えることで、 sin ( x ) + cos ( y ) を区間 - π / 2 < x < π / 2 0 < y < 5 にプロットします。

symsxyf = sin(x) + cos(y); fcontour(f,[-pi/2 pi/2 0 5])

Figure contains an axes object. The axes object contains an object of type functioncontour.

ライン スタイル、色、幅の変更

入力LineSpecを指定して、 x 2 - y 2 の等高線を青い破線としてプロットします。LineWidth2に指定します。マーカーはfcontourではサポートされていません。

symsxyfcontour(x^2 - y^2,'--b','LineWidth',2)

Figure contains an axes object. The axes object contains an object of type functioncontour.

同じ Figure への複数の等高線図のプロット

入力をベクトルとして渡すか、またはhold onを使用すると、複数の等高線図を連続して同じ Figure にプロットできます。LineStyleおよび名前と値の引数を指定すると、すべての等高線図に適用されます。各プロットに別々のLineStyleおよび名前と値の引数ペアを指定することはできません。

subplotを使用して、Figure を 2 つのサブプロットに分割します。第 1 サブプロットで、ベクトル入力を使用して sin ( x ) + cos ( y ) x - y をプロットします。第 2 サブプロットで、hold onを使用して同じ式をプロットします。

symsxysubplot(2,1,1) fcontour([sin(x)+cos(y) x-y]) title('Multiple Contour Plots Using Vector Inputs') subplot(2,1,2) fcontour(sin(x)+cos(y)) holdonfcontour(x-y) title('Multiple Contour Plots Using Hold Command') holdoff

Figure contains 2 axes objects. Axes object 1 with title Multiple Contour Plots Using Vector Inputs contains 2 objects of type functioncontour. Axes object 2 with title Multiple Contour Plots Using Hold Command contains 2 objects of type functioncontour.

等高線図の作成後の変更

e - ( x / 3 ) 2 - ( y / 3 ) 2 + e - ( x + 2 ) 2 - ( y + 2 ) 2 の等高線をプロットします。fcontourがプロット オブジェクトを返すように出力を指定します。

symsxyf = exp(-(x/3)^2-(y/3)^2) + exp(-(x+2)^2-(y+2)^2); fc = fcontour(f)

Figure contains an axes object. The axes object contains an object of type functioncontour.

fc = FunctionContour with properties: Function: exp(- x^2/9 - y^2/9) + exp(- (x + 2)^2 - (y + 2)^2) LineColor: 'flat' LineStyle: '-' LineWidth: 0.5000 Fill: off LevelList: [0.2000 0.4000 0.6000 0.8000 1 1.2000 1.4000] Show all properties

ドット表記を使用してオブジェクトfcのプロパティを設定し、LineWidth1に、LineStyleを破線に変更します。LevelList[1 0.9 0.8 0.2 0.1]に設定して、01に近い等高線を可視化します。

fc.LineStyle ='--'; fc.LineWidth = 1; fc.LevelList = [1 0.9 0.8 0.2 0.1]; colorbar

Figure contains an axes object. The axes object contains an object of type functioncontour.

等高線間の領域の塗りつぶし

fcontourFill入力を'on'に設定して、等高線間の領域を塗りつぶします。代わりに内挿シェーディングが必要な場合、オプション'EdgeColor''none'に設定して関数fsurfを使用した後に、コマンドview(0,90)を実行します。

以下の等高線を塗りつぶして、夕日のように見えるプロットを作成します。

e r f ( ( y + 2 ) 3 ) - e ( - 0 . 6 5 ( ( x - 2 ) 2 + ( y - 2 ) 2 ) .

symsxyf = erf((y+2)^3) - exp(-0.65*((x-2)^2+(y-2)^2)); fcontour(f,'Fill','on')

Figure contains an axes object. The axes object contains an object of type functioncontour.

等高線のレベルの指定

'LevelList'オプションを使用して、fcontourで等高線を描画する値を設定します。

symsxyf = sin(x) + cos(y); fcontour(f,'LevelList',[-1 0 1])

Figure contains an axes object. The axes object contains an object of type functioncontour.

等高線の解像度の制御

'MeshDensity'オプションを使用して、等高線の解像度を制御します。'MeshDensity'を増やすとプロットがより滑らかで正確になり、減らすとプロット速度が上がります。

subplotを使用して、Figure を 2 つに分割します。最初のサブプロットでは、 sin ( x ) sin ( y ) の等高線をプロットします。これでは四角形の角が合いません。これを修正するには、第 2 サブプロットで'MeshDensity'200に増やします。これで角が合います。これは、'MeshDensity'を増やすとプロットの解像度が向上することを示します。

symsxysubplot(2,1,1) fcontour(sin(x).*sin(y)) title('Default MeshDensity = 71') subplot(2,1,2) fcontour(sin(x).*sin(y),'MeshDensity',200) title('Increased MeshDensity = 200')

Figure contains 2 axes objects. Axes object 1 with title Default MeshDensity = 71 contains an object of type functioncontour. Axes object 2 with title Increased MeshDensity = 200 contains an object of type functioncontour.

タイトルと座標軸ラベルの追加、および目盛りの書式設定

x sin ( y ) - y cos ( x ) をプロットします。タイトルと座標軸ラベルを追加します。x 軸の範囲をpi/2の間隔にして、x 軸の目盛りを作成します。XTickプロパティを使用して、これらの目盛りを表示します。arrayfunを使用してtexlabelSに適用して、x 軸ラベルを作成します。XTickLabelプロパティを使用して、これらのラベルを表示します。以上の手順を、y 軸について繰り返します。

プロットに LaTeX を使用する方法については、latexを参照してください。

symsxyfcontour(x*sin(y)-y*cos(x), [-2*pi 2*pi]) gridontitle('xsin(y)-ycos(x) for -2\pi < x < 2\pi and -2\pi < y < 2\pi') xlabel('x') ylabel('y') ax = gca; S = sym(ax.XLim(1):pi/2:ax.XLim(2)); ax.XTick = double(S); ax.XTickLabel = arrayfun(@texlabel, S,'UniformOutput'、假);S =符号(ax.YLim(1):π/ 2:ax.YLim (2));斧子。YTick = double(S); ax.YTickLabel = arrayfun(@texlabel, S,'UniformOutput'、假);

Figure contains an axes object. The axes object with title x s i n ( y ) - y c o s ( x ) blank f o r blank - 2 pi blank < blank x blank < blank 2 pi blank a n d blank - 2 pi blank < blank y blank < blank 2 pi contains an object of type functioncontour.

アニメーションの作成

アニメーションを作成するには、表示されている式を関数ハンドルのFunctionプロパティを使用して変更した後、drawnowを使用してプロットを更新します。GIF にエクスポートする方法については、imwriteを参照してください。

変数iを –π/8 から π/8 まで変えることによって、パラメトリックな曲線isin(x) + icos(y)をアニメーション化します。

symsxyfc = fcontour(-pi/8.*sin(x)-pi/8.*cos(y));fori=-pi/8:0.01:pi/8 fc.Function = i.*sin(x)+i.*cos(y); drawnow pause(0.05)end

入力引数

すべて折りたたむ

プロットする式または関数。シンボリック式またはシンボリック関数として指定します。

xyのプロット範囲。2 つの数値のベクトルとして指定します。既定の範囲は、[-5 5]です。

xyのプロット範囲。4 つの数値のベクトルとして指定します。既定の範囲は、[-5 5 -5 5]です。

axes オブジェクト。axes オブジェクトを指定しない場合、プロット関数は現在の座標軸を使用します。

ライン スタイルと色。ライン スタイル指定子、色指定子、またはその両方が含まれる文字ベクトルまたは string として指定します。

例:'--r'は赤い破線を指定

これらの 2 つの表はライン スタイルと色のオプションの一覧です。

ライン スタイル指定子 説明
- 実線 (既定の設定)
-- 破線
: 点線
-. 一点鎖線
色指定子 説明

y

m

マゼンタ

c

シアン

r

g

b

w

k

名前と値の引数

オプションの引数のペアをName1=Value1,...,NameN=ValueNとして指定します。ここで、Nameは引数名、Valueは対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Nameを引用符で囲みます。

例:'MeshDensity',30

ここでは、プロパティの一部だけを紹介しています。一覧については、FunctionContour のプロパティを参照してください。

方向ごとの評価点の数。数値として指定します。既定値は71です。fcontourは適応評価を使用するため、評価点の数は実際の数の方が大きくなります。

例:30

等高線間の塗りつぶし。'on'または'off'として指定するか、数値または1(true) か0(false) の logical 値として指定します。値'on'は true と等価で、'off'falseと等価です。したがって、このプロパティの値は logical 値として使用できます。値は、matlab.lang.OnOffSwitchState型の on/off logical 値として保存されます。

  • 'on'は等高線の間を色で塗りつぶします。

  • 'off'は等高線の間のスペースを塗りつぶしません。

等高線のレベル。z 値のベクトルとして指定します。既定では、関数fcontourZDataプロパティの値の範囲に対応する値を選択します。

このプロパティを設定すると、対応するモード プロパティが manual に設定されます。

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

LevelListの選択モード。次の値のいずれかとして指定します。

  • 'auto'ZDataの値に基づいて値を決定します。

  • 'manual'— 手動で指定した値を使用します。値を指定するには、LevelListプロパティを設定します。モードが'manual'の場合、Functionプロパティまたは範囲を変更してもLevelListの値は変化しません。

等高線の間隔。スカラー数値として指定します。たとえば、2 ずつインクリメントする等高線を描画するには、この値を2に指定します。既定では、LevelStepZDataの値を使用して決定されます。

このプロパティを設定すると、対応するモード プロパティが'manual'に設定されます。

例:3.4

データ型:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64

LevelStepの選択モード。次の値のいずれかとして指定します。

  • 'auto'ZDataの値に基づいて値を決定します。

  • 'manual'— 手動で指定した値を使用します。値を指定するには、LevelStepプロパティを設定します。モードが'manual'の場合、Functionプロパティまたは範囲を変更してもLevelStepModeの値は変化しません。

等高線の色。'flat'、RGB 3 成分、16 進数のカラー コード、色の名前、または省略名として指定します。等高線ごとに異なる色を指定する場合は、'flat'を指定します。色は、線の等高線の値、カラー マップ、カラー マップに対するデータ値のスケーリングによって決まります。色のスケーリングの詳細については、カラーマップの範囲の制御を参照してください。

すべての等高線に同じ色を使用するには、RGB 3 成分、16 進数のカラー コード、色の名前、または省略名を指定します。

カスタム色には、RGB 3 成分または 16 進数のカラー コードを指定します。

  • RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度は[0,1]の範囲でなければなりません。たとえば[0.4 0.6 0.7]のようになります。

  • 16 進数のカラー コードは、ハッシュ記号 (#) の後に 3 つまたは 6 つの0からFまでの範囲の 16 進数の桁を続けた文字ベクトルまたは string スカラーです。この値では大文字と小文字は区別されません。したがって、カラー コード'#FF8800''#ff8800''#F80'、および'#f80'は等価です。

あるいは、一般的な色を名前で指定できます。この表は、名前の付いた色のオプションと、等価な RGB 3 成分および 16 進数のカラー コードの一覧です。

色の名前 省略名 RGB 3 成分 16 進数のカラー コード 外観
'red' 'r' [1 0 0] '#FF0000'

Sample of the color red

'green' 'g' [0 1 0] '#00FF00'

Sample of the color green

'blue' 'b' [0 0 1] '#0000FF'

Sample of the color blue

'cyan' 'c' [0 1 1] '#00FFFF'

Sample of the color cyan

'magenta' 'm' [1 0 1] '#FF00FF'

Sample of the color magenta

'yellow' 'y' [1 1 0] '#FFFF00'

Sample of the color yellow

'black' 'k' [0 0 0] '#000000'

Sample of the color black

'white' 'w' [1 1 1] '#FFFFFF'

Sample of the color white

'none' 適用不可 適用不可 適用不可 色なし

MATLAB®で多くの種類のプロットで使用されている既定の色の RGB 3 成分および 16 進数のカラー コードを次に示します。

RGB 3 成分 16 進数のカラー コード 外観
[0 0.4470 0.7410] '#0072BD'

Sample of RGB triplet [0 0.4470 0.7410], which appears as dark blue

[0.8500 0.3250 0.0980] '#D95319'

Sample of RGB triplet [0.8500 0.3250 0.0980], which appears as dark orange

[0.9290 0.6940 0.1250] '#EDB120'

Sample of RGB triplet [0.9290 0.6940 0.1250], which appears as dark yellow

[0.4940 0.1840 0.5560] '#7E2F8E'

Sample of RGB triplet [0.4940 0.1840 0.5560], which appears as dark purple

[0.4660 0.6740 0.1880] '#77AC30'

Sample of RGB triplet [0.4660 0.6740 0.1880], which appears as medium green

[0.3010 0.7450 0.9330] '#4DBEEE'

Sample of RGB triplet [0.3010 0.7450 0.9330], which appears as light blue

[0.6350 0.0780 0.1840] '#A2142F'

Sample of RGB triplet [0.6350 0.0780 0.1840], which appears as dark red

ライン スタイル。次の表のいずれかのオプションに指定します。

ライン スタイル 説明 結果として得られるライン
“- - -” 実線

Sample of solid line

'--' 破線

Sample of dashed line

':' 点線

Sample of dotted line

'-.' 一点鎖線

Sample of dash-dotted line, with alternating dashes and dots

'none' ラインなし ラインなし

ライン幅。ポイント単位の正の値として指定します。1ポイント= 1/72インチです。ラインがマーカーをもつ場合、ライン幅はマーカー エッジにも影響します。

ライン幅はピクセルの幅よりも細くすることはできません。ライン幅をシステムのピクセル幅よりも小さい値に設定すると、線は 1 ピクセルの幅で表示されます。

出力引数

すべて折りたたむ

1 つ以上の関数等高線オブジェクト。スカラーまたはベクトルとして返されます。これらのオブジェクトは特定の等高線図のプロパティのクエリと変更に使用できる一意の識別子です。詳細は、FunctionContour のプロパティを参照してください。

アルゴリズム

fcontourfのシンボリック変数をx軸に、次にy軸に割り当て、symvarは割り当てられる変数の順番を決定します。そのため、変数名と軸名が対応しない場合があります。fcontourがxまたはyを対応する軸に割り当てるように強制するには,プロットするシンボリック関数を作成し、そのシンボリック関数をfcontourに渡します。

たとえば、次のコードは表面 f(x,y) = sin(y) の等高線を 2 つの方法でプロットします。1 つ目の方法では、y 軸に対して波形を振動させます。2 つ目の方法では、y を x 軸に割り当てます。これがシンボリック関数内で最初の (および唯一の) 変数であるためです。

symsxy; f(x,y) = sin(y); figure; subplot(2,1,1) fcontour(f); subplot(2,1,2) fcontour(f(x,y));% Or fcontour(sin(y));

バージョン履歴

R2016a で導入