如何在gnuplot中使用子字符串
我想使用列中的子字符串绘制数据文件。我的数据文件包含以下格式的数据如何在gnuplot中使用子字符串,gnuplot,substring,Gnuplot,Substring,我想使用列中的子字符串绘制数据文件。我的数据文件包含以下格式的数据 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 ... 我想把括号中的数字画成(x,y)与x相对的y,类似于: plot "data.dat" u substr(($2),7,8 ):substr(($2),10,11) 正确的语法是什么
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
...
我想把括号中的数字画成(x,y)
与x
相对的y
,类似于:
plot "data.dat" u substr(($2),7,8 ):substr(($2),10,11)
正确的语法是什么?使用gnuplot正确地执行此操作有点棘手,因为gnuplot不允许指定任意格式作为输入。通常,最好的方法是使用外部工具为您提取数据,并将结果文件提供给gnuplot(这也可以使用语法(
plot'
)动态完成)
但是,在您的情况下,有一种方法可以让它与gnuplot一起工作,如下步骤:
- 使用
将set datafile separator':'
和x
的信息放在一列中y
- 使用
确定strstrt
和x
值的开始和结束字符串位置 对于y
-值,这将是x
substr(s, strstrt(s, "(")+1, strstrt(s, ",")-1)
- 将
添加到生成的子字符串中,使其隐式转换为实值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
感谢您的帮助,不幸的是,我收到了错误消息:“内部错误:应用于非字符串类型的子字符串范围运算符”我的数据文件如下所示: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…我想用(substr(strcol(2,2,3)):(substr(strcol(2,5,6))用“data.dat”将括号(x,y)之间的数字绘制为y与x之间的数字出现错误的原因可能是什么?感谢您终于抽出时间来尝试这一点,这很神奇:它很有效。非常感谢您!我在哪里可以找到有关get_ux(RegardsGreat:)等命令的信息?将这些函数粘在一起需要更详细的gnuplot数据处理知识。Gnuplot通常是执行这种解析的错误工具,尽管在像您这样的一些情况下它是可以完成的。在许多情况下,最好有一个外部脚本,例如python或任何其他语言,它执行实际的解析并将结果数据传递给gnuplot,比如
plot'
。