MATLAB 極座標プロット
このチュートリアルでは、MATLAB で polarplot()
関数を使用して極座標プロットを作成する方法について説明します。
MATLAB 極座標プロット
極座標プロットは、原点からのポイントの距離と x 軸に対するその角度を示す 2 次元座標系である極座標系で作成されます。
Matlab の polarplot()
関数を使用して、極座標プロットを作成できます。polarplot()
関数の基本的な構文は次のとおりです。
polarplot(My_theta,My_rho)
上記の構文は、各ポイントの角度 My_theta
と My_rho
変数に格納されている原点からの距離に従って極座標プロットを作成します。2つの入力がベクトルの場合、それらは同じ長さである必要があります。
両方の入力が行列の場合、それらは同じサイズである必要があります。この場合、最初の行列の各列は、2 番目の行列の各列に対してプロットされます。一方の入力がベクトルで、もう一方の入力が行列の場合、ベクトルの長さは行列に存在する列または行の長さと等しくなければならず、行列の各列がベクトルに対してプロットされます。
polarplot()
関数の単一の入力が行列の場合、関数は異なる色で極座標プロットに複数の線をプロットします。たとえば、polarplot()
関数を使用して極座標に 2つのベクトルをプロットしてみましょう。
以下のコードを参照してください。
clc
clear
My_theta = 0:0.01:2*pi;
My_rho = sin(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho)
出力:
上記のコードでは、2つのベクトルを使用しました。出力では、プロットが原点からのポイントの角度と距離を示していることがわかります。polarplot()
関数を使用して、1つのプロットに複数のデータラインをプロットすることもできます。
各行のデータを行列の列として渡す必要があります。polarplot()
関数は、最初の行列の最初の列と 2 番目の行列の最初の列をプロットします。距離や角度など、1つの次元に同じ値を使用する場合は、その次元にベクトルを使用できます。
たとえば、ベクトルと行列を使用して、同じ極座標プロットに複数の線をプロットしてみましょう。以下のコードを参照してください。
clc
clear
My_theta = 0:0.01:2*pi;
My_rho1 = sin(2*My_theta).*cos(2*My_theta);
My_rho2 = cos(2*My_theta).*cos(2*My_theta);
My_rho = [My_rho1; My_rho2];
polarplot(My_theta,My_rho)
legend('data1','data2')
出力:
上記のコードでは、半径の 2つのベクトルを作成し、それらを 2つの行として行列に格納し、polarplot()
関数が同じ角度ベクトルに対して 2つの行をプロットしました。legend()
関数を使用して、データに従ってプロットに凡例を追加しました。
polarplot()
関数は各データセットに異なる色を与え、それらを簡単に区別できるため、出力では極座標プロットに異なる色の 2 本の線があることがわかります。デフォルトでは、角度は度単位ですが、Matlab の deg2rad()
関数を使用してラジアンに変換することもできます。
polarplot()
関数を使用して原点からの点の半径を定義する単一のベクトルのみを使用して極座標プロットを作成することもできます。この関数は、間隔 0 から 2pi
までの角度に対して等間隔で半径ポイントをプロットします。
線のスタイル、マーカー、色などの線の仕様も設定できます。3つの引数すべてを単一の文字列内に渡し、それを polarplot()
関数内に渡して、行の仕様を変更できます。
線種は -
文字で実線、 --
文字で破線、 :
文字で点線、 -.
文字でダッシュ点線に設定することができます。マーカーはデータポイントの上に配置されます。マーカーは o
で円、 *
でアスタリスク、d
でダイヤモンド、p
で五芒星、h
で六芒星などの記号で設定することが可能です。
線の色は、色の名前または色の最初の文字を使用して設定できます。たとえば、赤の場合は r
、緑の場合は g
などです。たとえば、単一の文字列を使用して極座標プロットのラインスペックを変更してみましょう。
以下のコードを参照してください。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = cos(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho,':*g')
出力:
上記のコードでは、:*g
文字列を使用して、最初の文字が線のスタイルを点線に設定し、2 番目の文字がマーカーをアスタリスクに設定し、3 番目の文字が線の色を緑に設定する線の仕様を変更しました。。
プロットに複数のデータセットをプロットした場合、ラインスペックはグラフに存在するすべてのラインのスペックを変更し、データセットまたはラインを区別するのが難しくなる可能性があることに注意してください。
プロパティの名前を文字列として渡す必要がある名前と値のペアを使用してプロットのプロパティを変更することもできます。次に、その値を渡してそのプロパティを変更する必要があります。Color
、LineStyle
、LineWidth
、Marker
、MarkerSize
、および MarkerFaceColor
のプロパティを変更できます。
Color
プロパティは線の色を設定し、RGB トリプレット値、16 進数のカラーコード、色の名前、または色名の最初の文字を渡すことができます。LineStyle
プロパティは線のスタイルを設定し、使用可能な線のスタイルについては上記で説明しました。
LineWidth
プロパティは線の幅を設定し、デフォルトではその値は 0.5
に設定されていますが、任意の正の数に設定することもできます。Marker
プロパティは、データポイントの上で使用されるマーカーを設定し、デフォルトではその値は none に設定されますが、上記のマーカーシンボルを使用して設定できます。
MarkerSize
プロパティはマーカーのサイズを設定するために使用され、デフォルトではその値は 6 に設定されており、任意の正の値に変更できます。MarkerFaceColor
プロパティはマーカーの塗りつぶし色を設定します。つまり、プロットで使用されるマーカーを塗りつぶし、デフォルトでは値は none
に設定されますが、RGB トリプレットを使用して任意の色に設定できます。値、16 進コード、または色の名前。
たとえば、上記のプロパティを変更してみましょう。以下のコードを参照してください。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = cos(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho,'Color','red','LineStyle',':','Marker','o','LineWidth',2,'MarkerSize',10,'MarkerFaceColor','green')
出力:
polarplot()
関数内の最初の引数としてカスタム軸を追加することにより、プロットにカスタム軸を追加することもできます。半径の線とテキストの色、軸の目盛りラベルなど、軸のプロパティを設定することもできます。
gca
コマンドを使用して現在の軸を取得する必要があります。次に、これらの軸を使用して軸のプロパティを変更できます。Axes オブジェクトの後にドットを追加し、次にプロパティ名を追加する必要があります。次に、等号の後にプロパティ値を設定できます。
たとえば、極座標プロットの半径線の色を変更してみましょう。以下のコードを参照してください。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = cos(2*My_theta).*cos(2*My_theta);
polarplot(My_theta,My_rho)
x = gca;
x.RColor = 'red';
出力:
極軸のプロパティの詳細については、このリンクを確認してください。
MATLAB での 3D 極座標プロット
3D 平面に極座標プロットを作成する場合、極座標には 2 次元しかないため、極座標をデカルト座標に変更する必要があります。3D プロットを作成するには 3 次元が必要です。
pol2cart()
関数を使用して極座標をデカルト座標に変換してから、surf()
関数を使用して 3D 平面上に表面プロットを作成できます。極座標をデカルト座標に変換するために使用されるアルゴリズムを次の図に示します。
たとえば、極座標プロットの極座標をデカルトに変換し、surf()
関数を使用して 3D プロットを作成しましょう。以下のコードを参照してください。
clc
clear
My_theta = 0:0.1:2*pi;
My_rho = sin(My_theta);
t = meshgrid(linspace(0,2*pi,63));
[x,y,z] = pol2cart(My_theta, My_rho, t);
surf(x,y,z)
出力:
上記のコードでは、pol2cart()
関数で 3つの入力を使用しました。最初の入力は角度のベクトル、2 番目は原点からのポイントの距離のベクトル、3 番目のマトリックスは 3D プロットを作成するグリッドです。
上記のプロットには角度と半径の寸法がないため、上記のプロットは極座標プロットとは関係ありません。
極座標プロットでは、原点に関する点の角度と半径を確認できますが、上記のプロットでは、これは不可能です。ポイントの角度と半径に関する情報のみを取得する場合は、3D 極座標プロットを作成する必要はありません。2D 極座標プロットには polarplot()
関数を使用できます。
polarplot()
関数について詳しくは、こちらのリンクを参照してください。3D プロットを作成するために使用される surf()
関数についてのより詳細な情報は、こちらのリンクを参照してください。