Main Content

fcontour

  • Plot contours

説明

fcontour(f) は、x および y の既定の区間 [-5 5] に、z の一定間隔で関数 z = f(x,y) の等高線をプロットします。

fcontour(f,xyinterval) は、指定された区間にプロットします。xy の両方で同じ区間を使用するには、[min max] の形式をもつ 2 要素ベクトルとして xyinterval を指定します。異なる区間を使用するには、[xmin xmax ymin ymax] の形式をもつ 4 要素ベクトルを指定します。

fcontour(___,LineSpec) は、等高線のライン スタイルと色を設定します。たとえば、'-r' は赤のラインを指定します。このオプションは、前述した任意の入力引数の組み合わせの後に使用します。

fcontour(___,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して、ラインのプロパティを指定します。

fcontour(ax,___) は、現在の座標軸ではなく、ax で指定される座標軸にプロットします。

fc = fcontour(___)FunctionContour オブジェクトを返します。特定の FunctionContour オブジェクトのプロパティについてクエリや変更を行うには、fc を使用します。プロパティの一覧については、FunctionContour のプロパティ を参照してください。

すべて折りたたむ

既定の区間 -5<x<5 および -5<y<5f(x,y)=sin(x)+cos(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 番目の引数として指定します。同じ座標軸上の異なる区間に複数の入力をプロットする場合、すべてのデータが表示されるように軸の範囲が調整されます。この動作により、区分的な入力がプロットできるようになります。

区分的な入力

erf(x)+cos(y)-5<x<0sin(x)+cos(y)0<x<5

-5<y<5 にプロットします。

fcontour(@(x,y) erf(x) + cos(y),[-5 0 -5 5])
hold on
fcontour(@(x,y) sin(x) + cos(y),[0 5 -5 5])
hold off
grid on

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

x2-y2 の等高線を、ライン幅 2 の破線としてプロットします。

f = @(x,y) x.^2 - y.^2;
fcontour(f,'--','LineWidth',2)

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

hold on を使用して、sin(x)+cos(y) および x-y を同じ座標軸にプロットします。

fcontour(@(x,y) sin(x)+cos(y))
hold on
fcontour(@(x,y) x-y)
hold off

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

e-(x/3)2-(y/3)2+e-(x+2)2-(y+2)2 の等高線をプロットします。その関数 contour オブジェクトを変数に割り当てます。

f = @(x,y) 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: @(x,y)exp(-(x/3).^2-(y/3).^2)+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]

  Use GET to show all properties

ドット表記を使用して関数 contour オブジェクトのプロパティを設定することにより、ライン幅を 1 に、ライン スタイルを破線に変更します。LevelList プロパティを設定して、0 および 1 に近い等高線を表示します。カラー バーを追加します。

fc.LineWidth = 1;
fc.LineStyle = '--';
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.

次の等高線間の領域を塗りつぶして、日暮れのように見えるプロットを作成します。

erf((y+2)3)-e(-0.65((x-2)2+(y-2)2)).

f = @(x,y) 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.

代わりに内挿によるシェーディングを使用する場合は、関数 fsurf を使用し、その 'EdgeColor' オプションを 'none' に設定してから、コマンド view(0,90) を指定します。

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

f = @(x,y) 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' を大きくするとより滑らかで正確なプロットが得られますが、この値を小さくするとプロットの速度が上がります。

2 行 1 列のタイル表示チャート レイアウトで 2 つのプロットを作成します。最初のプロットで、sin(x)sin(y) の等高線を表示します。四角形の頂点が一致しません。この問題を修正するために、2 番目のプロットでは 'MeshDensity'200 に増やします。これで頂点が一致し、'MeshDensity' を大きくすると解像度が上がることが示されます。

f = @(x,y) sin(x).*sin(y);
tiledlayout(2,1)
nexttile
fcontour(f)
title('Default Mesh Density (71)')

nexttile
fcontour(f,'MeshDensity',200)
title('Custom Mesh Density (200)')

Figure contains 2 axes objects. Axes object 1 with title Default Mesh Density (71) contains an object of type functioncontour. Axes object 2 with title Custom Mesh Density (200) contains an object of type functioncontour.

xsin(y)-ycos(x) をプロットします。グリッドラインを表示し、タイトルを追加して、軸ラベルを追加します。

fcontour(@(x,y) x.*sin(y) - y.*cos(x), [-2*pi 2*pi], 'LineWidth', 2);
grid on
title({'xsin(y) - ycos(x)','-2\pi < x < 2\pi and -2\pi < y < 2\pi'})
xlabel('x')
ylabel('y')

Figure contains an axes object. The axes object with title xsin(y) blank - blank ycos(x) blank - 2 pi blank < blank x blank < blank 2 pi blank and blank - 2 pi blank < blank y blank < blank 2 pi, xlabel x, ylabel y contains an object of type functioncontour.

axes オブジェクトの XTickLabel プロパティと XTick プロパティを設定して、x 軸の目盛り値および対応するラベルを設定します。gca を使用して axes オブジェクトにアクセスします。同様に、y 軸の目盛り値および対応するラベルを設定します。

ax = gca;
ax.XTick = ax.XLim(1):pi/2:ax.XLim(2);
ax.XTickLabel = {'-2\pi','-3\pi/2','-\pi','-\pi/2','0',...
    '\pi/2','\pi','3\pi/2','2\pi'};

ax.YTick = ax.YLim(1):pi/2:ax.YLim(2);
ax.YTickLabel = {'-2\pi','-3\pi/2','-\pi','-\pi/2','0',...
    '\pi/2','\pi','3\pi/2','2\pi'};

Figure contains an axes object. The axes object with title xsin(y) blank - blank ycos(x) blank - 2 pi blank < blank x blank < blank 2 pi blank and blank - 2 pi blank < blank y blank < blank 2 pi, xlabel x, ylabel y contains an object of type functioncontour.

入力引数

すべて折りたたむ

プロット対象の関数。名前付き関数または無名関数の関数ハンドルとして指定します。

z = f(x,y) の形式の関数を指定します。関数は 2 つの行列の入力引数を受け入れ、同じサイズの行列の出力引数を 1 つ返さなければなりません。最高のパフォーマンスを得るには、行列演算子ではなく、配列演算子を使用します。たとえば、* (mtimes) ではなく .* (times) を使用します。

例: f = @(x,y) sin(x) + cos(y);

x および y のプロット区間。次のいずれかの形式で指定します。

  • [min max] 形式のベクトル — x および y の両方に区間 [min max] を使用します。

  • [xmin xmax ymin ymax] 形式のベクトル — x に区間 [xmin xmax]y に区間 [ymin ymax] を使用します。

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

ラインのスタイルと色。ライン スタイル指定子、カラー指定子、またはその両方を含む文字ベクトルまたは 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'、もしくは数値または logical 1 (true) または 0 (false) として指定します。'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

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

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

例: 3.4

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

等高線の色。'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

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

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

出力引数

すべて折りたたむ

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

バージョン履歴

R2016a で導入