如果列 A 有子字符串则绘图

发布于 2024-12-07 05:26:02 字数 345 浏览 2 评论 0原文

我需要在 gnuplot 中执行此操作:

plot 1:4 where col 2=="P1", col 3=="3", col 1 has substring "blur1"

这是一个数据集:

col_1          col_2        col_3    col_4
gcc.blur1.O0   P1           3        10.5
icc.blur1.O2   P2           5        9.8
gcc.blur2.O3   P2           3        8.9

提前致谢。

I need to do this in gnuplot:

plot 1:4 where col 2=="P1", col 3=="3", col 1 has substring "blur1"

Heres a dataset:

col_1          col_2        col_3    col_4
gcc.blur1.O0   P1           3        10.5
icc.blur1.O2   P2           5        9.8
gcc.blur2.O3   P2           3        8.9

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷鸟归林 2024-12-14 05:26:02

据我所知,您需要使用外部脚本来检查子字符串。像 awk 和 use 这样的东西

plot "< awk '{...awk commands...}' input.dat"

如果你只想测试 P1 的 col_2 ,你可以在 gnuplot 中通过

f(x,y)= (x eq "P1"? y : 1/0)

plot "input.dat" u 3:(f(strcol(2),$4))

strcol(n) 获取第 n 列作为字符串。 “eq”可用于比较字符串。

AFAIK you need to use an external script to check for substrings. Something like awk and use

plot "< awk '{...awk commands...}' input.dat"

If you just want to test col_2 for P1 you can do it in gnuplot via

f(x,y)= (x eq "P1"? y : 1/0)

plot "input.dat" u 3:(f(strcol(2),$4))

strcol(n) gets the n-ths column as a string. "eq" can be used to compare strings.

梦开始←不甜 2024-12-14 05:26:02

这种简单的检查可以使用 gnuplot 的 strstrt 函数来完成。它返回找到的第一个字符的索引,如果未找到子字符串,则返回 0:

strstrt(strcol(3), 'blur1') > 0

因此,您的绘图命令可以如下所示

matchesLine(col1, col2, col3) = strstrt(strcol(1), col1) > 0 && strcol(2) eq col2 && strcol(3) eq col3
plot 'file' using (matchesLine("blur1", "P1", "3") ? $1 : 1/0):4

Such a simple check can be done with gnuplot's strstrt function. It returns the index of the first character found, or 0 if the substring wasn't found:

strstrt(strcol(3), 'blur1') > 0

So, your plot command can look like

matchesLine(col1, col2, col3) = strstrt(strcol(1), col1) > 0 && strcol(2) eq col2 && strcol(3) eq col3
plot 'file' using (matchesLine("blur1", "P1", "3") ? $1 : 1/0):4
骷髅 2024-12-14 05:26:02

如果您提前知道子字符串的确切位置,则可以尝试检查该部分是否相等:

strcol(1)[5:9] eq 'blur1'

ps.:以下是一些在 gnuplot 中处理字符串的方便示例:
http://gnuplot.sourceforge.net/demo/stringvar.html

If you know the exact position of the substring in advance, you can try to check for equality on that portion like this:

strcol(1)[5:9] eq 'blur1'

ps.: Here are some handy examples for dealing with strings in gnuplot:
http://gnuplot.sourceforge.net/demo/stringvar.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文