ファイルからデータをプロットしています。データポイントはメートル単位です。右側に2番目の目盛り(y2)を標準単位で表示します。
このファイルは、ロケットモーターの推力の経時変化を表しています。データはニュートン単位です。左側にニュートンを表示し(これは自然に発生します)、右側にポンドの力を表示します。変換は単純な要素です(Nに0.2248を掛けてlbfを取得)。
Y2ticsを設定できます。手動でy2rangeを設定すると、右側に表示されます。どうすればよいかわからないのは、y2rangeを自動的にy1range *係数に設定することです。
私の最終的な解決策は、1回はy1のニュートンで、もう1回はy2のポンドで2回プロットし、y2プロットをほとんど見えないようにすることです。
plot '-' using 1:($2*0.2248) with dots axes x1y2 lc rgb 'white' notitle, \
'' using 1:2 with lines lc rgb '<color>' title '<title>'
上記の解決策はしばしばわずかに異なるyスケールを生成します:autoragneを使用すると、gnuplotは範囲を切り上げて、各軸の上の目盛りが丸められます。もちろん、丸めは異なる単位で異なります。
最終的に私は各グラフで最高推力値を見つけるPythonコードで終了します。次に、yrangeをその数に明示的に設定し、y2rangeをその数に設定します* 0.2248:
f.write("set yrange [0:%s]; set y2range[0:%s]\n" % (peak_thrust, peak_thrust*NEWTON_LBF));
これが最終結果です: http://www.lib.aero/hosted/motors/cesaroni_12-15-12.html (以下のサンプルグラフ)
これを行う最も簡単な方法は、単にデータをスケーリングすることだと私には思われます。
set y2tics
plot sin(x) w lines, 5*sin(x) w lines axes x1y2
もちろん、ファイルからデータをプロットしているので、次のようになります。
set y2tics
FACTOR=0.2248 #conversion factor from newtons to lbf
plot 'datafile' u 1:2 w lines, '' u 1:(FACTOR*$2) w lines
Yrangeを明示的に設定している場合(必要な場合があります):
set yrange [ymin:ymax]
set y2range [ymin*FACTOR:ymax*FACTOR]
最後に、本当に自動スケーリングに依存したい場合は、「体操」を行う必要があります。
まず、プロットを作成せずにplot
できるようにダミー端子を設定します。
set term unknown
plot 'datafile' u 1:2 #collect information on our data
データに関する情報を収集したので、実際のy2range
FACTOR=0.2248
set y2range [FACTOR*GPVAL_Y_MIN : FACTOR*GPVAL_Y_MAX]
set y2tics nomirror
set ytics nomirror
次に、ターミナルを設定してデータをプロットします。
set term ...
set output ...
plot 'datafile' u 1:2 w lines
バージョン5.0では、y
とy2
(またはx
とx2
)軸の間のこの種の関係のサポートが追加されました。
set xrange[0:370]
set ytics nomirror
set y2tics
set link y2 via 0.2248*y inverse y/0.2248
plot x
私はそれが古い質問であり、答えがすでに受け入れられていることを知っていますが、私のアプローチを共有する価値があると思います。
私は単にx2axisに変更されたラベルを使用します。あなたの場合、これは
set y2tics ("10" 10/0.2248, "20" 20/0.2248 etc etc...
このようにループできます
do for [i=0:1000:10] { set y2tics add (sprintf("%i",i) i/0.2248) }
for
の範囲は、データに応じて調整する必要があります(stats
と変数GPVAL_DATA_Y_MAX
を使用すると、完全に安心できます)。することを忘れないでください
set ytics nomirror
これはあなたが探しているものを正確に与えます、(ほとんど)1つのライナーで:
グリッドを使用し、変換された係数をx2axis
に設定したい場合、たとえば、ラベルy = 50 Nがy2 = 11.2に対応するようにします(グリッドを使用すると、整頓された状態を保ちます)。
do for [i=0:1000:50] { set y2tics add (sprintf("%5.1f",i*0.2248) }
これが結果です: