101.59 Nonlinear

書式:
     set nonlinear <axis> via f(axis) inverse g(axis)
     unset nonlinear <axis>

このコマンドはコマンド set link に似ていますが、2 つのリンクされた軸 の一方のみを表示する点が違います。隠される軸は線形軸のままです。表示す る軸に沿う座標は、g(x) を適用して隠れている軸の座標から割り当てられ、 f(x) は表示する軸の座標を隠れている線形軸に対応させます。変換式と逆変 換式の両方を指定する必要があります。

これがどのように機能するかを理解するには、x2 軸が対数軸の場合を考えて みてください。


     set x2ange [1:1000]
     set nonlinear x2 via log10(x) inverse 10**x

この例は、set log x2 と同じ効果を生みます。この場合隠れている軸は、 [log10(xmin):log10(xmax)] を計算することで [0:3] の範囲になります。

変換関数 f(), g() は、非線形軸毎に適切なダミー変数を使って定義する必要 があります。

   axis: x x2   dummy variable x
   axis: y y2   dummy variable y
   axis: z cb   dummy variable z
   axis: r      dummy variable r

例:


     set xrange [-3:3]
     set nonlinear x via norm(x) inverse invnorm(x)

この例は確率スケール ("プロビット") の x 軸を作成し、累積正規分布関数 Phi(x) のグラフが線形の y 軸に対して直線となります。

例:


     logit(p) = log(p/(1-p))
     logistic(a) = 1. / (1. + exp(-a))
     set xrange [.001 : .999]
     set nonlinear y via logit(y) inverse logistic(y)
     plot logit(x)

この例はロジットスケールの y 軸を作成し、線形の x 軸に対する logit(x) のグラフが直線になります。

例:


     f(x) = (x <= 100) ? x : (x < 500) ? NaN : x-390
     g(x) = (x <= 100) ? x : x+390
     set xrange [0:1000] noextend
     set nonlinear x via f(x) inverse g(x)
     set xtics add (100,500)
     plot sample [x=1:100] x, [x=500:1000] x

この例は "切断軸" を作成します。x 座標は左に 0 から 100、右に 500 から 1000 が並び、その間に 10 幅の小さな隙間ができます。100 < x < 500 の間 のデータは描画されず、これは期待通りの動作をします。

竹野茂治@新潟工科大学
2021-03-26