1

作成した .plt ファイルを使用して、さまざまなファイルのデータにアクセスしています。各データセットの特定のドメインのみが重要です。各データセットの特定のドメインのみを 1 つのグラフにプロットしようとしています。

各ドメインのデータはピークに対応します。これらの各ピークをプロットしてから、指数関数的減衰関数をピークに当てはめたいと思います。

私のプロットファイルのコードは次のとおりです。

set xlabel "Time (ms)"
set ylabel "voltage"

set title "T1 time for Isopropyl Alcohol"
dir='C:\Users\Daniel\Desktop\College\modern lab\gp501-win64-mingw\gnuplot\bin\data files\isoproply_alc_t1\'
unset key
set style data linespoints
x(v, left, right) = (v >= left && v <= right ? v : 1/0)
plot dir.'nmr-t1-isopropyl-dt10' using (x($0*0.01, 3, 7)):1, \
     dir.'nmr-t1-isopropyl-dt50' using (x($0*0.01, 20, 40)):1, \
     dir.'nmr-t1-isopropyl-dt100' using (x($0*0.01, 40, 60)):1, \
     dir.'nmr-t1-isopropyl-dt150' using (x($0*0.01, 70, 80)):1, \
     dir.'nmr-t1-isopropyl-dt200' using (x($0*0.01, 99, 101)):1, \
     dir.'nmr-t1-isopropyl-dt230' using (x($0*0.01, 114, 116)):1, \
     dir.'nmr-t1-isopropyl-dt250' using (x($0*0.01, 124, 126)):1, \
     dir.'nmr-t1-isopropyl-dt270' using (x($0*0.01, 134, 136)):1, \
     dir.'nmr-t1-isopropyl-dt290' using (x($0*0.01, 144, 146)):1, \
     dir.'nmr-t1-isopropyl-dt300' using (x($0*0.01, 149, 151)):1, \
     dir.'nmr-t1-isopropyl-dt320' using (x($0*0.01, 159, 161)):1, \
     dir.'nmr-t1-isopropyl-dt340' using (x($0*0.01, 169, 171)):1, \
     dir.'nmr-t1-isopropyl-dt360' using (x($0*0.01, 178, 183)):1, \
     dir.'nmr-t1-isopropyl-dt400' using (x($0*0.01, 198, 201)):1, \
     dir.'nmr-t1-isopropyl-dt430' using (x($0*0.01, 213, 217)):1, \
     dir.'nmr-t1-isopropyl-dt470' using (x($0*0.01, 233, 236)):1, \
     dir.'nmr-t1-isopropyl-dt580' using (x($0*0.01, 289, 291)):1, \
     dir.'nmr-t1-isopropyl-dt620' using (x($0*0.01, 309, 311)):1, \
     dir.'nmr-t1-isopropyl-dt650' using (x($0*0.01, 324, 326)):1, \
     dir.'nmr-t1-isopropyl-dt700' using (x($0*0.01, 348, 352)):1, \
     dir.'nmr-t1-isopropyl-dt750' using (x($0*0.01, 374, 376)):1, \
     dir.'nmr-t1-isopropyl-dt800' using (x($0*0.01, 399, 401)):1, \
     dir.'nmr-t1-isopropyl-dt850' using (x($0*0.01, 424, 426)):1, \
     dir.'nmr-t1-isopropyl-dt900.2' using (x($0*0.01, 449.5, 451)):1

これにより、適切なドメインが得られます。

ここで、任意の x 値を超えて、y 軸上でデータ ポイントを反転させたいと考えています。それらをネガティブにしたい。

コマンドを試しましたflipyが、これは機能しませんでした。

4

1 に答える 1

1

plotgnuplot は、単一のコマンドですべてのデータ ファイルに個別の範囲を指定することをサポートしていません。これは関数に対してのみ機能します。

必要usingな範囲外のすべてのポイントに1/0、それぞれのポイントを無効にする値を指定して、ステートメント内のデータをフィルタリングする必要があります。

left = 3
right = 7
plot 'file.dat' using ($0 > left && $0 < right ? $0 : 1/0):1

コマンドを読みやすくするために、フィルタリングを関数に入れることもできます。コードの可読性を向上させる他の方法もいくつかあります。

  • dirファイルへのパスを含む変数を定義します。.データ ファイル名は、演算子によってこの変数と連結されます。

    dir = 'C:\my path\'
    plot dir.'file.dat' ...
    
  • キー (凡例) をスキップすると、グローバルにスキップできます。unset key

  • を使用して、データ ファイルのプロット スタイルをグローバルに設定できます。set style data linespoints

したがって、スクリプトは次のようになります

set xlabel "Time (ms)"
set ylabel "voltage"
set format y "%s"

set title "T1 time for Isopropyl Alcohol"
dir='C:\Users\Daniel\Desktop\College\modern lab\gp501-win64-mingw\gnuplot\bin\data files\isoproply_alc_t1\'
unset key
set style data linespoints
x(v, left, right) = (v >= left && v <= right ? v : 1/0
plot dir.'nmr-t1-isopropyl-dt10' using (x($0*0.01, 3, 7)):1, \
     dir.'nmr-t1-isopropyl-dt50' using (x($0*0.01, 20, 40)):1, \
     dir.'nmr-t1-isopropyl-dt100' using (x($0*0.01, 40, 60)):1, \
     dir.'nmr-t1-isopropyl-dt150' using (x($0*0.01, 70, 80)):1
于 2015-06-27T21:04:25.803 に答える