Gnuplot 限制绘制在一个图上的多个数据文件的域
Gnuplot restricting the domain of multiple data files plotted onto one plot
我正在使用我编写的 .plt 文件访问来自许多不同文件的数据。每个数据集只有一个特定的域是重要的。我试图仅将每个数据集的特定域绘制到一张图上。
每个域的数据对应一个峰。我想绘制这些峰中的每一个,然后将指数衰减函数拟合到峰。
这是我的绘图文件中的代码:
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([=10=]*0.01, 3, 7)):1, \
dir.'nmr-t1-isopropyl-dt50' using (x([=10=]*0.01, 20, 40)):1, \
dir.'nmr-t1-isopropyl-dt100' using (x([=10=]*0.01, 40, 60)):1, \
dir.'nmr-t1-isopropyl-dt150' using (x([=10=]*0.01, 70, 80)):1, \
dir.'nmr-t1-isopropyl-dt200' using (x([=10=]*0.01, 99, 101)):1, \
dir.'nmr-t1-isopropyl-dt230' using (x([=10=]*0.01, 114, 116)):1, \
dir.'nmr-t1-isopropyl-dt250' using (x([=10=]*0.01, 124, 126)):1, \
dir.'nmr-t1-isopropyl-dt270' using (x([=10=]*0.01, 134, 136)):1, \
dir.'nmr-t1-isopropyl-dt290' using (x([=10=]*0.01, 144, 146)):1, \
dir.'nmr-t1-isopropyl-dt300' using (x([=10=]*0.01, 149, 151)):1, \
dir.'nmr-t1-isopropyl-dt320' using (x([=10=]*0.01, 159, 161)):1, \
dir.'nmr-t1-isopropyl-dt340' using (x([=10=]*0.01, 169, 171)):1, \
dir.'nmr-t1-isopropyl-dt360' using (x([=10=]*0.01, 178, 183)):1, \
dir.'nmr-t1-isopropyl-dt400' using (x([=10=]*0.01, 198, 201)):1, \
dir.'nmr-t1-isopropyl-dt430' using (x([=10=]*0.01, 213, 217)):1, \
dir.'nmr-t1-isopropyl-dt470' using (x([=10=]*0.01, 233, 236)):1, \
dir.'nmr-t1-isopropyl-dt580' using (x([=10=]*0.01, 289, 291)):1, \
dir.'nmr-t1-isopropyl-dt620' using (x([=10=]*0.01, 309, 311)):1, \
dir.'nmr-t1-isopropyl-dt650' using (x([=10=]*0.01, 324, 326)):1, \
dir.'nmr-t1-isopropyl-dt700' using (x([=10=]*0.01, 348, 352)):1, \
dir.'nmr-t1-isopropyl-dt750' using (x([=10=]*0.01, 374, 376)):1, \
dir.'nmr-t1-isopropyl-dt800' using (x([=10=]*0.01, 399, 401)):1, \
dir.'nmr-t1-isopropyl-dt850' using (x([=10=]*0.01, 424, 426)):1, \
dir.'nmr-t1-isopropyl-dt900.2' using (x([=10=]*0.01, 449.5, 451)):1
这给出了正确的域。
现在我想在 y 轴上翻转数据点,通过一些任意的 x 值。我想让他们消极。
我尝试了 flipy
命令,但是没有用。
Gnuplot 不支持在单个 plot
命令中为每个数据文件指定单独的范围。这仅适用于函数。
您必须过滤 using
语句中的数据,为所有超出所需范围的点赋予值 1/0
,这会使相应的点无效:
left = 3
right = 7
plot 'file.dat' using ([=10=] > left && [=10=] < right ? [=10=] : 1/0):1
为了使命令更具可读性,您还可以将过滤放在一个函数中。还有其他一些提高代码可读性的可能性:
定义一个包含文件路径的变量dir
。然后通过 .
运算符将数据文件名与此变量连接:
dir = 'C:\my path\'
plot dir.'file.dat' ...
Skipping key (legend) 可以用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([=12=]*0.01, 3, 7)):1, \
dir.'nmr-t1-isopropyl-dt50' using (x([=12=]*0.01, 20, 40)):1, \
dir.'nmr-t1-isopropyl-dt100' using (x([=12=]*0.01, 40, 60)):1, \
dir.'nmr-t1-isopropyl-dt150' using (x([=12=]*0.01, 70, 80)):1
我正在使用我编写的 .plt 文件访问来自许多不同文件的数据。每个数据集只有一个特定的域是重要的。我试图仅将每个数据集的特定域绘制到一张图上。
每个域的数据对应一个峰。我想绘制这些峰中的每一个,然后将指数衰减函数拟合到峰。
这是我的绘图文件中的代码:
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([=10=]*0.01, 3, 7)):1, \
dir.'nmr-t1-isopropyl-dt50' using (x([=10=]*0.01, 20, 40)):1, \
dir.'nmr-t1-isopropyl-dt100' using (x([=10=]*0.01, 40, 60)):1, \
dir.'nmr-t1-isopropyl-dt150' using (x([=10=]*0.01, 70, 80)):1, \
dir.'nmr-t1-isopropyl-dt200' using (x([=10=]*0.01, 99, 101)):1, \
dir.'nmr-t1-isopropyl-dt230' using (x([=10=]*0.01, 114, 116)):1, \
dir.'nmr-t1-isopropyl-dt250' using (x([=10=]*0.01, 124, 126)):1, \
dir.'nmr-t1-isopropyl-dt270' using (x([=10=]*0.01, 134, 136)):1, \
dir.'nmr-t1-isopropyl-dt290' using (x([=10=]*0.01, 144, 146)):1, \
dir.'nmr-t1-isopropyl-dt300' using (x([=10=]*0.01, 149, 151)):1, \
dir.'nmr-t1-isopropyl-dt320' using (x([=10=]*0.01, 159, 161)):1, \
dir.'nmr-t1-isopropyl-dt340' using (x([=10=]*0.01, 169, 171)):1, \
dir.'nmr-t1-isopropyl-dt360' using (x([=10=]*0.01, 178, 183)):1, \
dir.'nmr-t1-isopropyl-dt400' using (x([=10=]*0.01, 198, 201)):1, \
dir.'nmr-t1-isopropyl-dt430' using (x([=10=]*0.01, 213, 217)):1, \
dir.'nmr-t1-isopropyl-dt470' using (x([=10=]*0.01, 233, 236)):1, \
dir.'nmr-t1-isopropyl-dt580' using (x([=10=]*0.01, 289, 291)):1, \
dir.'nmr-t1-isopropyl-dt620' using (x([=10=]*0.01, 309, 311)):1, \
dir.'nmr-t1-isopropyl-dt650' using (x([=10=]*0.01, 324, 326)):1, \
dir.'nmr-t1-isopropyl-dt700' using (x([=10=]*0.01, 348, 352)):1, \
dir.'nmr-t1-isopropyl-dt750' using (x([=10=]*0.01, 374, 376)):1, \
dir.'nmr-t1-isopropyl-dt800' using (x([=10=]*0.01, 399, 401)):1, \
dir.'nmr-t1-isopropyl-dt850' using (x([=10=]*0.01, 424, 426)):1, \
dir.'nmr-t1-isopropyl-dt900.2' using (x([=10=]*0.01, 449.5, 451)):1
这给出了正确的域。
现在我想在 y 轴上翻转数据点,通过一些任意的 x 值。我想让他们消极。
我尝试了 flipy
命令,但是没有用。
Gnuplot 不支持在单个 plot
命令中为每个数据文件指定单独的范围。这仅适用于函数。
您必须过滤 using
语句中的数据,为所有超出所需范围的点赋予值 1/0
,这会使相应的点无效:
left = 3
right = 7
plot 'file.dat' using ([=10=] > left && [=10=] < right ? [=10=] : 1/0):1
为了使命令更具可读性,您还可以将过滤放在一个函数中。还有其他一些提高代码可读性的可能性:
定义一个包含文件路径的变量
dir
。然后通过.
运算符将数据文件名与此变量连接:dir = 'C:\my path\' plot dir.'file.dat' ...
Skipping key (legend) 可以用
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([=12=]*0.01, 3, 7)):1, \
dir.'nmr-t1-isopropyl-dt50' using (x([=12=]*0.01, 20, 40)):1, \
dir.'nmr-t1-isopropyl-dt100' using (x([=12=]*0.01, 40, 60)):1, \
dir.'nmr-t1-isopropyl-dt150' using (x([=12=]*0.01, 70, 80)):1