9

この質問に対する答えをオンラインで見つけるのに苦労しているようです。タイトルは基本的な質問ですが、より具体的には、2 つの x 軸が必要です。1 つは図の上部にあり、1 つは下部にあるものに依存しています。ただし、これは x2!=5*x1 などの単純な関係ではありません。関係は、データ ファイル自体によって与えられます。より具体的に言うと、次のようなファイルがあります。

 V     T       P
2.0   15.0   0.586
3.0   17.4   0.798
4.0   25.3   1.023
5.0   28.9   1.124
6.0   30.2   1.456

x1y1 軸上の (wrt) P に対して T をプロットし、x2y1 軸上に T を V に対してプロットしたいと思います。したがって、x1 軸は P 範囲を表示し、x2 は V 範囲を x1 の対応する場所に表示します。つまり、x1 軸の 0.586 は、同じ場所で x2 軸の 2.0 を持ちます。これは Gnuplot で実際に可能ですか、またはこれを行うには 2 つの x 軸との関係が必要ですか? どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

18

これを達成する方法は次のとおりです。最初にスクリプトと結果を示し、後で手順を説明します。

reset
set xtics nomirror
set x2tics
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 3:2 with linespoints ps 2 lw 2 title 'T wrt P', \
     '' using 3:2:x2tic(1) axes x2y1 with points ps 2 lw 2 title 'T wrt V'

ここに画像の説明を入力

最初にT wrt P on をプロットしx1y1ます。その後、 T wrt Vをプロットし、これにPx2y1の範囲と目盛りの位置を使用しますが、Vの値を x2 軸の目盛りラベルとして使用します。これにより、 Pの線形スケールが得られ、それに応じてVが適応されます。

これを機能させるには、 と を使用する必要がありset autoscale xfixますset autoscale x2fix。これは正確な範囲を使用し、軸を次の主要な目盛に拡張しません。これは、x 軸に対してのみ行われますが、カスタムの目盛を持つ x2 軸に対しては行われません。

もちろん、このプロセスを逆にして、 Vに線形スケールを使用し、 P目盛を適合させることもできます。いずれにせよ、xtic()またはで配置されるカスタム ティックの場合x2tic、数値はデータ ファイルでフォーマットされているように使用されます。

reset
set xtics nomirror
set x2tics 1
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 1:2:xtic(3) with linespoints ps 2 lw 2 title 'T wrt P', \
     '' using 1:2 axes x2y1 with points ps 2 lw 2 title 'T wrt V'

ここに画像の説明を入力

ここでは、実際に一致していることを示すために、両方のプロット ラインの点が示されています。

1 つのコマンドで xtics のみを生成するには、-value を使用できNaNますy。また、カスタム ティックの一部のみをラベルにする必要がある場合は、x2tic呼び出しで適切なチェックが必要です。ここでは、すべての偶数行にのみラベルを設定します$0。これは現在の行番号で、 から始まり0ます):

reset
set xtics nomirror
set x2tics
set autoscale xfix
set autoscale x2fix
set xlabel 'P'
set ylabel 'T'
set x2label 'V'
plot 'data.txt' using 3:2 with linespoints ps 2 lw 2 title 'T wrt P', \
     '' using 3:(NaN):x2tic((int($0) % 2) ? '' : stringcolumn(1)) axes x2y1 t ''

結果:

ここに画像の説明を入力

于 2013-10-01T18:53:56.823 に答える