plotting

Last-modified: 2026-02-11 (水) 14:03:46

プロット
目次

概要2D plotContour プロットタイトル、軸、伝説エクスポート
プロットとグラフィックの作成は、データを分析し、レポートを作成するための非常に一般的なタスクです。Scilabは、さまざまなタイプのプロットやチャートを作成およびカスタマイズするためのさまざまな方法を提供します。このセクションでは、2Dプロットと輪郭プロットの作成方法を説明します。それから私たちは私たちのグラフィックのタイトルと伝説をカスタマイズします。最終的にプロットをエクスポートして、レポートで使用できるようにします。概要
Scilabは、2Dおよび3Dプロットの多くの種類を生成できます。プロット機能、輪郭機能を備えた輪郭プロット、3Dサーフ機能を備えたプロット、ヒストプロット機能を備えたヒストグラム、および他の多くの種類のプロットを使用してX-Yプロットを作成できます。
最も一般的に使用されるプロット関数は次のとおりです。
plot: 2D plot surf: 3D plot contour: contour plot pie: pie chart histplot: histogram bar: bar chart barh: horizontal bar chart hist3d: 3D histogram polarplot: plot polar coordinates Matplot: 2D plot of a matrix using colors Kwrayplot: smooth 2D plot of a surface using colors grayplot: 2D plot of a surface using colors
3D プロットの例を取得するために、Scilab コンソールでステートメント surf を入力することを簡素化できます。 [1]: surf ( ) out [1]: プロットの作成中に、データの作成またはプロットの設定にいくつかの関数を使用します。
linspace: 直線的に間隔を置いたベクトルfeval: グリッドの凡例上の関数を評価します。 現在のプロットタイトルの凡例を設定します。 現在のプロットのタイトルを設定します。
2D プロット
このセクションでは、簡単なx-yプロットを作成する方法を紹介します。ここでは、ベクトル化された関数の使用を強調し、1つの関数呼び出しでデータの行列を生成します。ミキシング関数は、入力引数 x を $ で四角くします。\hat{\;}$ 演算子。[2]: 関数 f = myquadratic(x)
f = x 。^ 2
エンド機能
delete(gcf()) linspace 関数を使用して、$[1,10]$ の間隔で 50 個の値を生成できます。[3]: xdata = linspace(1, 10, 50);
xdata(1:10) Out [3]: ans =
1. 1.1836735 1.3673469 1.5510204 1.7346939 1.9183673 2.1020408 2.2857143 2.4693878 2.6530612
xdata 変数には、最初の値が 1 で、最後の値が 10 である 50 個のエントリの行ベクトルが含まれるようになりました。
私たちはそれをミクロ関数に渡し、与えられた点で関数の値を得ることができます。[4] で: イラスト = myquadratic(xdata);
イタリア語(1:10) Out [4]: Ans =
1. 1.4010829 1.8696377 2.4056643 3.0091628 3.6801333 4.4185756 5.2244898 6.0978759 7.0387339
これにより、50 個のエントリを含む行ベクトル バラータが生成されます。最後に、データがx-yプロットとして表示されるように、プロット機能を使用します。注5: plot(xdata, srata) out [5]: 中間配列 srata を生成せずに同じプロットを作成できたことに注意してください。実際、プロット関数の第2の入力引数は、次のセッションのように関数である可能性があります。注6: plot(xdata, myquadratic) out [6]: 管理するポイント数が多くなると、関数を使用すると、中間ベクトルモデルの生成を回避するため、メモリ容量が大幅に節約されます。コンツアープロット
このセクションでは、多変量関数の輪郭プロットを提示し、輪郭関数を利用します。このタイプのグラフィックは、最適値の位置を示す方法で2つの変数の関数を描画するため、数値最適化の文脈でよく使用されます。 Scilab関数の輪郭は、関数の輪郭をプロットします。contour 関数は、以下の構文の contour(x, y, z, mb) を持ちます。
x (resp. y) は x (resp. y) の値の行ベクトルで、サイズ n1 (resp n2)z は、関数の値または、表面 z = f(x, y ) 、 nz レベルの値またはレベルの数を定義する Scilab 関数の値を含む、実際のサイズ (n1,n2) の行です。
次の Scilab セッションでは、関数 myquadratic が入力引数として渡される輪郭関数の単純な形式を使用します。myquadratic関数は2つの入力引数 x1 と x2 を取り、 f(x1,x2 )=x12 +x22 を返します。linspace関数は、データのベクトルを生成するために使用され、その関数を範囲内で分析する [-1,1]2。[7]: function f = myquadratic2arg ( x1, x2 )
f = x1**2 + x2**2;
エンド機能
xdata = linspace ( -1, 1, 100 );
単位 = linspace ( -1, 1, 100 );
輪郭 ( xdata, srata, myquadratic2arg, 10) out [7]: 実際には、入力変数 x が行ベクトルであるヘッダー z = myfunction (x) があることがあります。問題は、輪郭関数で要求される2つの引数ではなく、1つの入力引数しかないことです。この小さな問題を解決するための2つの可能性があります。
2つのネストループを作ることで輪郭関数にデータを提供し、fevalを使用して輪郭関数にデータを提供し、最初のものを呼び出す新しい関数を定義します。
このセクションでは、これら3つのソリューションについて説明します。最初の目標は、読者が状況に最適な方法を選択できるようにすることです。次の Scilab ナイーブセッションでは、関数 myquadratic1arg を定義します。 この関数は、1 つのベクトルを単一の入力引数として取ります。
次に、2つのネストループを実行して、z値を含むZata行列を計算します。z 値は計算されます。
ポイントのすべての組み合わせ(x(i ), y(j)) は、R2、
i=1,2,...,nx と j=1,2,...,ny の場合、 nx と ny は x 座標と y 座標の点数です。
最後に、必要なレベルのリスト(前のレベルの数ではなく)を含む輪郭関数を呼び出します。
これにより、Scilab がレベルを自動的に計算できるようにする代わりに、必要なレベルを正確に取得できます。[8]: 関数 f = myquadratic1arg ( x )
f = x(1)**2 + x(2)**2;
エンド機能
xdata = linspace ( -1, 1, 100 );
単位 = linspace ( -1, 1, 100 );
for i = 1:length(xdata)
j = 1:length(ydata)
x = [xdata](i) エルタタ(j)].';
例えば、pg ( i, j ) = myquadratic1arg ( x );
終わり
終わり
輪郭 ( xdata, srata, srata, [ 0.1 0.3 0.5 0.7]) out [8]: 前のスクリプトは完璧に動作します。それでも、ネストループが2つあるため効率が悪く、パフォーマンス上の理由から Scilab ではこれを避けるべきです。もう1つの問題は、点数が多い場合に多くのメモリスペースを消費する可能性があるZataマトリックスを保存しなければならないことです。この方法は、Scilabが提供する機能を悪用しているため、回避する必要があります。次のスクリプトでは、値のグリッド上の関数を評価し、計算されたデータを返すフェバル関数を使用します。生成されたグリッドは、すべての点の組み合わせで構成されています(x(i ), y(j)) は、R2.ここでは、関数 myquadratic1arg を変更する可能性がないと仮定します。したがって、2つの入力引数を必要とする中間関数myquadratic3を作成します。完了したら、myquadratic3引数をfeval関数に渡し、Danaata行列を生成します。[9] で: function f = myquadratic1arg ( x )
f = x(1)**2 + x(2)**2;
エンド機能
関数 f = myquadratic3 ( x1, x2 )
f = myquadratic1arg ( [x1 x2] )
エンド機能
xdata = linspace ( -1, 1, 100 );
単位 = linspace ( -1, 1, 100 );
例: セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション3 で、セクション
輪郭 ( xdata, srata, zdata, [ 0.1 0.3 0.5 0.7]) out [9]: 前のスクリプトは、もちろん、前のスクリプトとまったく同じプロットを生成します。この方法は可能な限り避けるべきです。
サイズ100×100のZatataマトリックスを格納します。 最後に、プロットを作成する3番目の方法があります。次の Scilab セッションでは、前回と同じ中間関数 myquadratic3 を使用しますが、それを輪郭関数に直接渡します。[10] で: function f = myquadratic1arg ( x )
f = x(1)**2 + x(2)**2;
エンド機能
関数 f = myquadratic3 ( x1, x2 )
f = myquadratic1arg ( [x1 x2] )
エンド機能
xdata = linspace ( -1, 1, 100 );
単位 = linspace ( -1, 1, 100 );
輪郭 ( xdata, srata, myquadratic3, [ 0.1 0.3 0.5 0.7]) out [10]: 前のスクリプトは、もちろん、前と同じプロットを生成します。主な利点は、Zataマトリックスを作成しなかったことです。私たちは簡単な2Dプロットを作成する方法を簡単に概説しました。タイトル、軸、伝説がデータに対応するように、プロットの構成に興味があります。タイトル、軸、伝説
このセクションでは、X-y プロットのタイトル、軸、伝説を設定する Scilab グラフィックス機能を紹介します。[11]: 関数 f = myquadratic ( x )
f = x.^2
エンド機能
xdata = linspace ( 1, 10, 50 );
変数 = myquadratic ( xdata );
plot ( xdata, srata ) out [11]: Scilab グラフィックシステムはグラフィックハンドルをベースとしています。グラフィックハンドルは、グラフィックエンティティのフィールドへのオブジェクト指向のアクセスを提供します。グラフィックレイアウトは、曲線、X軸、Y軸、タイトル、伝説などに関連付けられている行などのサブオブジェクトに分解されます。必要に応じて、各オブジェクトを別のオブジェクトに分解できます。各グラフィックオブジェクトは、曲線の線の幅や色などのプロパティのコレクションに関連付けられています。これらのプロパティは、他の Scilab 変数と同様に、値を取得または設定するだけでクエリおよび構成できます。ハンドルの管理は簡単で非常に効率的です。しかし、ほとんどの基本的なプロットの設定は単純な関数呼び出しによって行うことができます。このセクションでは、これらの基本的な機能に焦点を当てます。[12] で: 関数 f = myquadratic ( x )
f = x.^2
エンド機能
xdata = linspace ( 1, 10, 50 );
変数 = myquadratic ( xdata );
プロット ( xdata, srata )
title ( " My title " ); out [12]: プロットの軸も設定したい場合があります。この目的のために、以下のスクリプトで xtitle 関数を使用します。[13]: 関数 f = myquadratic ( x )
f = x.^2
エンド機能
xdata = linspace ( 1, 10, 50 );
変数 = myquadratic ( xdata );
プロット ( xdata, srata )
xtitle ( " My title ", "X axis ", "Y axis " ); out [13 ] : 同じ2Dプロット内の2つのデータセット、すなわちXデータの1セットとYデータの2セットを比較したい場合があります。 次のスクリプトでは、2つの関数f(x)=x2とf(x)=2x2を定義し、同じx-yプロット上のデータをプロットします。さらに、プロット関数の「+-」と「o-」オプションを使用して、2つの曲線f(x)=x2とf(x)=2x2を区別できるようにします。[14]: 関数 f = myquadratic ( x )
f = x.^2
エンド機能
関数 f = myquadratic2 ( x )
f = 2 * x.^2
エンド機能
xdata = linspace ( 1, 10, 50 );
変数 = myquadratic ( xdata );
プロット ( xdata, srata, " + - " )
例2 = myquadratic2 ( xdata );
プロット ( xdata, srata2, " o- " )
xtitle ( " My title ", "X axis ", "Y axis " ); out [14 ] : さらに、f(x)=x2と関連付けられている曲線と、f(x)=2x2と関連付けられている曲線を知ることができるように、伝説を構成する必要があります。この目的のために、各曲線に関連付けられた凡例を印刷するために、凡例関数を使用します。[15]: 関数 f = myquadratic ( x )
f = x.^2
エンド機能
関数 f = myquadratic2 ( x )
f = 2 * x.^2
エンド機能
xdata = linspace ( 1, 10, 50 );
変数 = myquadratic ( xdata );
プロット ( xdata, srata, " + - " )
例2 = myquadratic2 ( xdata );
プロット ( xdata, srata2, " o- " )
legend ( " x^2 ", "2x^2 " ) ; out [15 ] : グラフィックプロットの作成方法と設定方法がわかりました。プロットが十分に興味深い場合は、それをレポートに入れる価値があるかもしれません。これを行うには、次のセクションの件名であるファイルにプロットをエクスポートできます。輸出
このセクションでは、Scilab 関数を使用して、インタラクティブまたは自動的にプロットをファイルにエクスポートする方法を説明します。Scilab は、任意のグラフィックを、以下に示すベクトル形式およびビットマップ形式にエクスポートできます。
プロットが作成されると、グラフィックスウィンドウの [ファイル] > [エクスポート先に...] メニューをインタラクティブに使用して、コンテンツをファイルにエクスポートできます。その後、ファイル名とその型を設定できます。
xs2png: PNG へのエクスポート xs2pdf: PDF へのエクスポート xs2svg: SVG へのエクスポート xs2eps: カプセル化されたポストスクリプトへのエクスポート xs2ps: Postscript へのエクスポート xs2emf: EMF へのエクスポート (Windows のみ)
ビットマップフォーマット関数は以下の通りです。
xs2fig: export into FIG xs2gif: export into GIF xs2jpg: export into JPG xs2bmp: export into BMP xs2ppm: export into PPM
代わりに xs2* 関数を使用できます。これらの関数はすべて、同じ呼び出しシーケンス:xs2png ( window_number, filename ) に基づいています。

ここで:
window_number はグラフィックスウィンドウの数で、ファイル名はエクスポートするファイルの名前です。
たとえば、次のセッションでは、デフォルトのグラフィックウィンドウであるグラフィックウィンドウ番号0のプロットを foo.png ファイルにエクスポートします。[16]: 関数 f = myquadratic ( x )
f = x.^2
エンド機能
xdata = linspace ( 1, 10, 50 );
変数 = myquadratic ( xdata );
プロット ( xdata, srata )
xs2png ( 0, " foo.png " ) out [16 ] : より高品質のドキュメントを生成したい場合は、ベクトリアルフォーマットが好ましい。たとえば、LaTeX ドキュメントでは Scilab を使用できます。
ドキュメントのサイズに関係なく、読みやすさを向上させるために、PDFファイルにエクスポートされたプロット。