<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( https://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) INRIA
 * Copyright (C) 2009 - DIGITEO - Pierre Lando
 * Copyright (C) 2010 - DIGITEO - Yann Collette
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 * Copyright (C) 2020 - Samuel GOUGEON
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
          xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
          xmlns:scilab="http://www.scilab.org" xml:id="plot2d" xml:lang="ja">
    <refnamediv>
        <refname>plot2d</refname>
        <refpurpose>2Dプロット</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>呼び出し手順</title>
        <synopsis>
            plot2d()   // example
            plot2d(y)
            plot2d(x, y)
            plot2d(logflag, x, y)
            plot2d(.., y, style)
            plot2d(.., y, style, strf)
            plot2d(.., y, style, strf, leg)
            plot2d(.., y, style, strf, leg, rect)
            plot2d(.., y, style, strf, leg, rect, nax)
            plot2d(.., y, key1=value1, key2=value2, ..)
        </synopsis>
    </refsynopsisdiv>
    <refsection role="parameters">
        <title>パラメータ</title>
        <variablelist>
            <varlistentry>
                <term>x</term>
                <listitem>
                    <para>実数の行列またはベクトル. 省略された場合,
                        ベクトル<literal>1:n</literal>が指定されたと仮定します.
                        ただし, <literal>n</literal>は<literal>y</literal>
                        パラメータで指定された曲線の点の数です.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>y</term>
                <listitem>
                    <para>実数の行列またはベクトル.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>key1=value1, key2=value2, ...</term>
                <listitem>
                    <para>
                        The following options <varname>logflag</varname>, <varname>style</varname>,
                        <varname>strf</varname>, <varname>leg</varname>, <varname>rect</varname>,
                        <varname>nax</varname>, <varname>frameflag</varname>, and
                        <varname>axesflag</varname> described below can either be listed in the
                        right order as listed in the synopses, or provided in any order after
                        <varname>y</varname> as named arguments, for instance like in
                        <literal>plot(y, frameflag=3, leg="Curve 1@Curve 2")</literal>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>logflag</term>
                <listitem>
                    <para>
                        Sets the linear or logarithmic scale for both X and Y axes.
                        Possible values are <literal>"nn"</literal>, <literal>"nl"</literal> ,
                        <literal>"ln"</literal> or <literal>"ll"</literal>.
                        <literal>"n"</literal> stands for
                        <emphasis role="bold">n</emphasis>ormal scale ;
                        <literal>"l"</literal> stands for
                        <emphasis role="bold">l</emphasis>ogarithmic.
                        The first letter set the X axis. The second one sets the Y axis.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>style</term>
                に
                <listitem>
                    <para>各曲線のスタイルを設定します.
                        値は整数値(正または負)を有する実数ベクトルを指定します.
                         値には曲線と同じ数のエントリを有するベクトルを指定します.
                    </para>
                    <itemizedlist>
                        <listitem>
                            <para>
                                <literal>style(i)</literal> が正の場合,
                                曲線は実線で描画され,
                                <literal>style(i)</literal>は曲線の描画に使用される
                                色の添字を定義します(<link linkend="getcolor">getcolor</link>参照).
                                線のスタイルおよび太さはpolylineエンティティプロパティ
                                (<link linkend="polyline_properties">polyline_properties</link>参照)
                                により設定することができることに注意してください.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                <literal>style(i)</literal>が負またはゼロの場合,
                                指定した曲線の点はマーカにより描画されます,
                                <literal>abs(style(i))</literal> は使用するマーカ id を定義します.
                                マークの色および大きさはpolylineエンティティプロパティ
                                (<link linkend="polyline_properties">polyline_properties</link>参照)
                                により設定することができることに注意してください.
                            </para>
                        </listitem>
                    </itemizedlist>
                    <para/>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>strf</term>
                <listitem>
                    3-character-long string <literal>"abc"</literal> specifying all
                    together if legends must be displayed, and the values of
                    <varname>frameflag</varname> and <varname>axesflag</varname>.
                    By default, <literal>strf= "081"</literal>. "a", "b" and "c" are:
                    <para/>
                    <table cellpadding="0">
                        <tr valign="top">
                            <th>a :</th>
                            <td>凡例の表示を制御します.
                                <table cellpadding="0">
                                    <tr><th>a=0 :</th><td>凡例なし.</td></tr>
                                    <tr><th>a=1 :</th>
                                        <td>凡例が表示されます.凡例は,
                                            オプションの引数 <varname>leg</varname>で指定されます.
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <tr valign="top">
                            <th>b :</th>
                            <td>
                                <varname>frameflag</varname> integer code in [0,9],
                                controlling the computation the actual coordinate ranges,
                                as described below.
                            </td>
                        </tr>
                        <tr valign="top">
                            <th>c :</th>
                            <td>
                                <varname>axesflag</varname> integer code in [0:5 9],
                                controlling the display and position of X and Y axes,
                                as described below.
                            </td>
                        </tr>
                    </table>
                    <para/>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>leg</term>
                <listitem>
                    <para>このオプションは曲線の凡例を設定する際に使用されます.
                        <literal>"leg1@leg2@...."</literal>という形式の文字列とする
                        必要があります.
                        ただし, <literal>leg1</literal> , <literal>leg2</literal> , ...
                        はそれぞれ最初の曲線,2番目の曲線,...　の凡例です.
                        曲線の凡例はx軸の下に描画されます.
                        デフォルトは
                        <literal> " "</literal>です.
                    </para>
                    <para>
                        After plotting, the handle of the block of legends can be
                        retrieved with <literal>gca().children(2)</literal>.
                        <link linkend="captions">captions</link>,
                        <link linkend="legend">legend</link> or
                        <link linkend="legends">legends</link> can also be used
                        instead of <varname>leg</varname>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>rect</term>
                <listitem>
                    <para>
                        このオプションはプロット時に指定した最小限の範囲を設定する際に
                        使用できます.
                        このオプションが指定された場合,
                        値は以下の4個のエントリを有する実数ベクトルとする必要があります:
                    </para>
                    <para>
                        <literal>[xmin,ymin,xmax,ymax]</literal>.
                        <literal>xmin</literal> および <literal>xmax</literal> は横座標の範囲を定義し,
                        <literal>ymin</literal> および <literal>ymax</literal>は縦座標の範囲を定義します.
                    </para>
                    <para>
                        この引数は,指定した<literal>rect</literal>引数に基づき軸境界を
                        定義する方法を指定する<literal>frameflag</literal>オプションと共に
                        使用することができます.
                        <literal>frameflag</literal>オプションが指定されない場合,
                        <literal>frameflag=7</literal>が仮定されます.
                    </para>
                    <para>軸境界も軸エンティティプロパティによりカスタマイズできます
                        (<link linkend="axes_properties">axes_properties</link>参照).
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>nax</term>
                <listitem>
                    <para>
                        このオプションは軸ラベルおよび目盛定義を指定する際に使用できます.
                        値には4個の整数エントリ<literal>[nx,Nx,ny,Ny]</literal>を有する実数ベクトルを
                        指定します.
                    </para>
                    <para>
                        <literal>Nx</literal> はx軸で使用される主目盛の数
                        (autoticksの場合は-1を指定)を指定し,
                        <literal>nx</literal>は2つのx軸主目盛の間に描画される副目盛の
                        数を指定します.
                    </para>
                    <para>
                        <literal>Ny</literal> および <literal>ny</literal> は
                        y軸の同様な情報を指定します.
                    </para>
                    <para>
                        <literal>axesflag</literal> オプションが設定されない場合,
                        <literal>nax</literal> オプションは
                        <literal>axesflag</literal>オプションが9に設定されていると
                        仮定します.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>frameflag</term>
                <listitem>
                    <para>controls the computation of the actual coordinate ranges
                        from the minimal requested values. The associated value should
                        be an integer ranging from 0 to 8.
                    </para>
                    <para>
                <table border="1" cellpadding="2">
                    <tr><th>frameflag</th><th>axes bounds</th>      <th>other actions</th></tr>
                    <tr align="center">
                        <th>0</th>        <td>unchanged</td>        <td></td></tr>
                    <tr align="center">
                        <th>1</th>        <td>from rect</td>        <td></td></tr>
                    <tr align="center">
                        <th>2</th>        <td>from input x,y</td>   <td></td></tr>
                    <tr align="center">
                        <th>3</th>        <td>from rect</td>        <td>isometric axes</td></tr>
                    <tr align="center">
                        <th>4</th>        <td>from input x,y</td>   <td>isometric axes</td></tr>
                    <tr align="center">
                        <th>5</th>        <td>from rect</td>        <td>pretty axes</td></tr>
                    <tr align="center">
                        <th>6</th>        <td>from input x,y</td>   <td>pretty axes</td></tr>
                    <tr align="center">
                        <th>7</th>        <td>from rect</td>        <td>all replot with new scales</td></tr>
                    <tr align="center">
                        <th>8</th>        <td>from input x,y</td>   <td>all replot with new scales</td></tr>
                    <tr align="center">
                        <th>9</th>        <td>from input x,y</td>   <td>Pretty axes. All replot with new scales</td></tr>
                </table>
                    </para>
                    <para>
                        The setting of axes boundaries can also be customized through
                        the <literal>gca().data_bounds</literal>,
                        <literal>gca().tight_limits</literal>,
                        <literal>gca().data_bounds</literal>, and
                        <literal>gca().isoview</literal> properties
                        (see <link linkend="axes_properties">axes_properties</link>).
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>axesflag</term>
                <listitem>
                    <para>
                        integer code in [0:5 9], controlling the display and position of
                        X and Y axes.
                    </para>
                    <para>
                        The axes aspect can also be customized directly through the
                        <literal>gca().box</literal>, <literal>gca().axes_visible</literal>,
                        <literal>gca().x_location</literal>, and <literal>gca().y_location</literal>,
                        properties (see <link linkend="axes_properties">axes_properties</link>).
                    </para>
        <table border="1" cellpadding="2">
            <tr><th>axesFlag</th><th>.box</th><th>.axes_visible</th><th>axes position</th><th>comments</th></tr>
            <tr align="center">
                <th>0</th><td>"off"</td><td>["off" "off"]</td><td></td>     <td>Naked plot</td></tr>
            <tr align="center">
                <th>1</th><td>"on"</td> <td>["on" "on"]</td>  <td></td>     <td></td></tr>
            <tr align="center">
                <th>2</th><td>"on"</td> <td>["off" "off"]</td><td></td>     <td>Naked box</td></tr>
            <tr align="center">
                <th>3</th><td>"off"</td><td>["on" "on"]</td>  <td>y_location="right"</td><td></td></tr>
            <tr align="center">
                <th>4</th><td>"off"</td><td>["on" "on"]</td>  <td>crossed @ middle</td><td></td></tr>
            <tr align="center">
                <th>5</th><td>"on"</td> <td>["on" "on"]</td>  <td>crossed @ middle</td><td></td></tr>
            <tr align="center">
                <th>9</th><td>"off"</td><td>["on" "on"]</td>  <td></td>     <td>(default setting)</td></tr>
        </table>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection role="description">
        <title>説明</title>
        <para>
            <literal>plot2d</literal> は一連の2次元曲線をプロットします.
            指定した曲線の点の間は区分線形補間が行われます.
        </para>
        <para>
            Any point with <literal>y(i)=Nan</literal> is masked: no mark and no segment to its
            neighboors are displayed.
        </para>
        <para>
            For any point with <literal>y(i)=±Inf</literal>, a vertical segment starting
            from each of its both neighboors is drawn in the ± direction, up to the current ceil
            or down to the current floor of the axes.
        </para>
        <para>
            By default, successive calls to plot2d() overplots new curves over existing ones.
            Autoclearing for each new plot can be set using <literal>gca().auto_clear="on"</literal>.
            Please see <link linkend="axes_properties">axes properties</link>.
            <literal><link linkend="clf">clf</link></literal> can also be used to manually clear
            the whole figure.
        </para>
        <para>
            Matlabの<literal>plot</literal>構文に慣れている場合には,
            <link linkend="plot">plot</link>を使用するべきです.
        </para>
        <para>
            <literal>x</literal> および <literal>y</literal> がベクトルの場合,
            plot2d(x,y,&lt;opt_args&gt;) はベクトル <literal>y</literal> を
            ベクトル <literal>x</literal>に対してプロットします.
            ベクトル<literal>x</literal> および <literal>y</literal>は
            同じ数のエントリを有する必要があります.
        </para>
        <para>
            <literal>x</literal> がベクトルで <literal>y</literal> が行列の場合,
            plot2d(x,y,&lt;opt_args&gt;) は<literal>y</literal>の各列を
            ベクトル<literal>x</literal>に対してプロットします.
            この場合,<literal>y</literal>の列の数は<literal>x</literal>
            のエントリの数に等しい必要があります.
        </para>
        <para>
            <literal>x</literal> および <literal>y</literal> が行列の場合,
            plot2d(x,y,&lt;opt_args&gt;) は<literal>y</literal>の各列を
            対応する<literal>x</literal>の列に対してプロットします.
            この場合,<literal>x</literal> と<literal>y</literal>の
            大きさは同じである必要があります.
        </para>
        <para>
            <literal>y</literal> がベクトルの場合, plot2d(y,&lt;opt_args&gt;)
            はベクトル <literal>y</literal> をベクトル
            <literal>1:size(y,'*')</literal>に対してプロットします.
        </para>
        <para>
            <literal>y</literal> が行列の場合, plot2d(y,&lt;opt_args&gt;)
            は<literal>y</literal>の各列をベクトル
            <literal>1:size(y,1)</literal>に対してプロットします.
        </para>
        <para>
            プロットをカスタマイズするために引数<literal>&lt;opt_args&gt;</literal> を
            使用することができます.
        </para>

        <para>
            デモを参照するにはコマンド <literal>plot2d()</literal> を使用してください.
        </para>
        <para>その他に以下のような高レベルplot2d 関数が存在します:</para>
        <itemizedlist>
            <listitem>
                <para>
                    plot2d2 は <literal>plot2d</literal> と同じですが,曲線は
                    区分定数と仮定されます.
                </para>
            </listitem>
            <listitem>
                <para>
                    plot2d3 は<literal>plot2d</literal> と同じですが, 曲線は
                    垂直棒グラフとしてプロットされます.
                </para>
            </listitem>
            <listitem>
                <para>
                    plot2d4 は <literal>plot2d</literal> と同じですが, 曲線は
                    垂直な矢印をでプロットされます.
                </para>
            </listitem>
        </itemizedlist>
    </refsection>
    <refsection role="examples">
        <title>例</title>
        <programlisting role="example"><![CDATA[
// x 初期化
x=[0:0.1:2*%pi]';
//簡単なプロット
plot2d(sin(x));
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(sin(x));
        </scilab:image>
        <programlisting role="example"><![CDATA[
clf();
x=[0:0.1:2*%pi]';
plot2d(x,sin(x));
//複数のプロット
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,sin(x));
        </scilab:image>
        <programlisting role="example"><![CDATA[
clf();
x=[0:0.1:2*%pi]';
plot2d(x,[sin(x) sin(2*x) sin(3*x)])
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,[sin(x) sin(2*x) sin(3*x)])
        </scilab:image>
        <programlisting role="example"><![CDATA[
// フレームの次元を指定した複数プロット
clf();
plot2d(x,[sin(x) sin(2*x) sin(3*x)],rect=[0,0,6,0.5]);
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,[sin(x) sin(2*x) sin(3*x)],rect=[0,0,6,0.5]);
        </scilab:image>
        <programlisting role="example"><![CDATA[
//凡例と目盛/スタイルを指定した複数プロット
clf();
plot2d(x,[sin(x) sin(2*x) sin(3*x)],..
       [1,2,3],leg="L1@L2@L3",nax=[2,10,2,10],rect=[0,-2,2*%pi,2]);
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,[sin(x) sin(2*x) sin(3*x)],..
            [1,2,3],leg="L1@L2@L3",nax=[2,10,2,10],rect=[0,-2,2*%pi,2]);
        </scilab:image>
        <programlisting role="example"><![CDATA[
// 等軸
clf();
plot2d(x,sin(x),1,frameflag= 4);
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,sin(x),1,frameflag= 4);
        </scilab:image>
        <programlisting role="example"><![CDATA[
// スケール
clf();
plot2d(x,sin(x),1,frameflag= 6);
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,sin(x),1,frameflag= 6);
        </scilab:image>
        <programlisting role="example"><![CDATA[
// 前のプロット/スタイルでオートスケール
clf();
plot2d(x,sin(x),-1);
plot2d(x,2*sin(x),12);
plot2d(2*x,cos(x),3);
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,sin(x),-1);
            plot2d(x,2*sin(x),12);
            plot2d(2*x,cos(x),3);
        </scilab:image>
        <programlisting role="example"><![CDATA[
// 軸を右に
clf();
plot2d(x,sin(x),leg="sin(x)");
a=gca(); // 軸エンティティのハンドル
a.y_location ="right";
 ]]></programlisting>
        <scilab:image>
            x=[0:0.1:2*%pi]';
            plot2d(x,sin(x),leg="sin(x)");
            a=gca(); // Handle on axes entity
            a.y_location ="right";
        </scilab:image>
        <programlisting role="example"><![CDATA[
// 軸の中心を (0,0) に
clf();
plot2d(x-4,sin(x),1,leg="sin(x)");
a=gca(); // 軸エンティティのハンドル
a.x_location = "origin";
a.y_location = "origin";
// plot2dで作成されたエンティティを操作 ...
isoview
a = gca();
a.children // 軸の子の一覧.
// 2個のポリラインと1個の凡例からなる複合要素がある
poly1= a.children(1).children(1); //ポリラインのハンドルをpoly1に保存
poly1.foreground = 4; // スタイルを変更する別の方法...
poly1.thickness = 3;  // ...曲線の太さを変更.
poly1.clip_state='off'; // クリッピングの制御
leg = a.children(2); // 凡例のハンドルをlegに保存
leg.font_style = 9;
leg.line_mode = "on";
isoview off
 ]]></programlisting>
        <scilab:image>
            // axis centered at (0,0)
            clf();
            x=[0:0.1:2*%pi]';
            plot2d(x-4,sin(x),1,leg="sin(x)");
            a=gca(); // Handle on axes entity
            a.x_location = "origin";
            a.y_location = "origin";
            // Some operations on entities created by plot2d ...
            isoview()
            a=gca();
            a.children // list the children of the axes.
            // There are a compound made of two polylines and a legend
            poly1= a.children(1).children(1); //store polyline handle into poly1
            poly1.foreground = 4; // another way to change the style...
            poly1.thickness = 3;  // ...and the thickness of a curve.
            poly1.clip_state='off'; // clipping control
            leg = a.children(2); // store legend handle into leg
            leg.font_style = 9;
            leg.line_mode = "on";
            isoview("off")
        </scilab:image>
    </refsection>
    <refsection role="see also">
        <title>参照</title>
        <simplelist type="inline">
            <member>
                <link linkend="plot">plot</link>
            </member>
            <member>
                <link linkend="polyline_properties">.polyline_style</link>
            </member>
            <member>
                <link linkend="plot2d2">plot2d2</link>
            </member>
            <member>
                <link linkend="plot2d3">plot2d3</link>
            </member>
            <member>
                <link linkend="plot2d4">plot2d4</link>
            </member>
            <member>
                <link linkend="polarplot">polarplot</link>
            </member>
            <member>
                <link linkend="gca">gca</link>
            </member>
            <member>
                <link linkend="close">close</link>
            </member>
            <member>
                <link linkend="axes_properties">axes_properties</link>
            </member>
            <member>
                <link linkend="clf">clf</link>
            </member>
        </simplelist>
    </refsection>
</refentry>
