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 の間 のデータは描画されず、これは期待通りの動作をします。
竹野茂治@新潟工科大学