我想使用列中的子字符串绘制数据文件。我的数据文件包含以下格式的数据
1 (15, 3): dX: -1.619, dY: 3.315, dXSc: 0.981, dYSc: 0.993
2 ( 4,16): dX: -0.540, dY: -0.540, dXSc: 0.992, dYSc: 0.977
...
Run Code Online (Sandbox Code Playgroud)
我想绘制括号之间的数字,(x,y)类似于:yx
plot "data.dat" u substr(($2),7,8 ):substr(($2),10,11)
Run Code Online (Sandbox Code Playgroud)
正确的语法是什么?
使用 gnuplot 正确执行此操作有点棘手,因为 gnuplot 不允许指定任意格式作为输入。通常,最好的方法是使用外部工具为您提取数据并将结果文件提供给 gnuplot(这也可以使用语法 ( ) 即时完成plot '< script data.dat'...。
但是,在您的情况下,有一个 hack 可以按照以下步骤使其与 gnuplot 一起使用:
set datafile separator ':'的信息放在一列中。xy用于确定和值strstrt的开始和结束字符串位置。xy
对于x- 值,这将是
substr(s, strstrt(s, "(")+1, strstrt(s, ",")-1)
Run Code Online (Sandbox Code Playgroud)添加0.0到结果子字符串以将它们隐式转换为实际值。
适用于您的示例数据的完整脚本是
set datafile separator ":"
get_x(c) = 0.0 + substr(strcol(c), strstrt(strcol(c), "(") + 1, strstrt(strcol(c), ",") - 1)
get_y(c) = 0.0 + substr(strcol(c), strstrt(strcol(c), ",") + 1, strstrt(strcol(c), ")") - 1)
plot 'data.dat' using (get_x(1)):(get_y(1)) with points pt 7 ps 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |