Plot 修改csv中的字符串输入以确定前导符号

Plot 修改csv中的字符串输入以确定前导符号,plot,substring,gnuplot,Plot,Substring,Gnuplot,我有另一个程序的csv输出,如下所示: 1.0s,34.56a 3.0s,352.12a 5.0s,1995.34b 第一列包含x值(可以忽略s),而第二列包含y值。使用Gnuplot 5可以简单地绘制值,但是,我需要确定第二列中每个值的前导符号(后面跟着a的所有值都应该是正值,后面跟着b的所有值都应该是负值) 虽然符号的确定应该像前面描述的那样简单,但我正在努力动态分割每个y值。根据Gnuplot手册,应该可以使用子字符串,但我不知道如何告诉子字符串只包含最后一个值。要获取字符串的最后一个字

我有另一个程序的csv输出,如下所示:

1.0s,34.56a
3.0s,352.12a
5.0s,1995.34b
第一列包含x值(可以忽略
s
),而第二列包含y值。使用Gnuplot 5可以简单地绘制值,但是,我需要确定第二列中每个值的前导符号(后面跟着
a
的所有值都应该是正值,后面跟着
b
的所有值都应该是负值)


虽然符号的确定应该像前面描述的那样简单,但我正在努力动态分割每个y值。根据Gnuplot手册,应该可以使用子字符串,但我不知道如何告诉子字符串只包含最后一个值。

要获取字符串的最后一个字符
s
,请使用

s[strlen(s):]
要正确解析数据文件,请使用以下命令:

set datafile separator ','
parse(s) = (s[strlen(s):] eq "b" ? -1 : 1) * real(s[:strlen(s)-1])
plot 'data.dat' using 1:(parse(strcol(2)))

我刚刚解决了这个问题,把我的解决方案发布给其他人。我的解决方案基于和

我创建了一个新函数
customydata=(s[strlen:*])
,它返回字符串的最后一个字符

plot命令就是
plot'heelingdata.dat'u 1:(customydata(strcol(2))eq'a'?(-1)*$2:$2)w lp
,我将字符串插入上述函数,并检查它是否是
a