Gnuplot でいくつかの 3D 曲面プロットを作成していますが、プロットの各境界に沿って目盛りを付けると非常に便利です。添付のサンプル プロットでは、左上または右上の水平境界 (境界 256 および 512) に沿って目盛りはありません。背面の垂直面に垂直グリッド線を描画するには、これらの境界線に目盛りを付ける必要があります。どうすればこれを達成できますか?
2 に答える
grid
とを使用してこれを解決する方法が見つかりませんでしたborder
。ただし、比較的簡単な回避策があります。これは、データをプロットするたびに範囲を変更しない場合にのみ役立ちます。
基本的に、xy 平面のグリッド線の線種と数と位置に一致する一定のサーフェスを後壁にプロットします。
まず、範囲を設定します。番号は後で必要になるため、ラベルを付けました。
xmin=0 ; xmax = 100
ymin=0.01 ; ymax=1000
zmin=0 ; zmax=990
set xrange [xmin:xmax]
set yrange [ymin:ymax]
set zrange [zmin:zmax]
z 軸の交点を xy 平面 (ticslevel) と設定すると、例に視覚的に一致するビュー角度を推測しました。の前にこれらを設定しmultiplot
ます。
set ticslevel 0.0
set view 60,45,1
さあ、楽しみです。この部分では、xy 平面のグリッド線の数を知る必要があります (x 軸と y 軸の主目盛りの数と同じです)。バック グリッドの壁を最初にプロットするため、最後にデータ/関数の背後に配置されます。また、この部分のグリッドと境界線をオフにしていますが、そのままにしておくと正確に重なるはずです。
set multiplot
unset grid
set border 0
Y 軸は対数スケールですが、グリッドは直線的に分離されています (等間隔のグリッド ライン)。したがって、この時点で、y軸に線形スケールが必要です。(この時点より前の場合はset logscale y
、コメントアウトしてください。) 対数目盛が異なるため、y 軸に線形ラベルを付けたくないので、それに応じて形式を設定します。
set format y ""
set isosamples 6,9 # - set this to number of tics on y-axis,z-axis
異なる範囲でプロットするときに変更される可能性がある唯一の手動設定は次のとおりです。isosamples
の数を y 軸、z 軸の目盛りの数に設定する必要があります。
gnuplot が各曲面に使用する行数を制御するには、アイソサンプル (上記で実行) とダミー変数の範囲の両方を設定する必要がありますu,v
。グリッド ライン タイプであるライン タイプ 0 に注意してください。最初の壁を x = xmin にプロットします。
set parametric
set urange [ymax:ymin]
set vrange [zmax:zmin]
splot xmin,u,v w lines lt 0
同様に、y = ymax でもう一方の壁を作成します。
set urange [xmin:xmax]
set vrange [zmin:zmax]
splot u,ymax,v w lines lt 0
unset parametric
壁ができたので、あなたがすでに持っているものを絵に描くことができます. 境界線、目盛りを設定し、以前に無効にした y 軸ラベルを再度有効にし、y 軸の対数スケールを設定し (今が良い時期です)、アイソサンプルをデフォルト値にリセットします。
set xtics mirror
set ytics mirror
set ztics mirror
set grid ytics xtics back
set logscale y
set format y " %g"
set isosamples 10,10
そして、慣れているようにデータ/関数をプロットします。
splot 'data.txt' w lines
unset multiplot
そして、私たちは終わりました....
必要な変更の可能性:
x 軸と y 軸は私のものとは異なると思いますview 60,135,1
。ただし、これは x と y も切り替えます。その後、サーフェスの座標が変更されます。
とを使用して、そこでチックを設定してみることができます。Xticsのドキュメントは次のとおりです。x2tics
y2tics