我有以下数据,但我不想使用 GNUPLOT 绘制这些数据:
#TIME #VALUE #SOURCE
1 100 A
1 88 B
2 115 A
2 100 B
3 130 A
3 210 B
Run Code Online (Sandbox Code Playgroud)
我想根据 #SOURCE 列的值绘制两条线。A一行, B一行。GNUPLOT 是否可以实现这一点?如果可以,如何实现?
是否还可以根据列 #TIME 绘制列 #VALUE 的总和?意味着,对于 #TIME 中的所有相等条目,#VALUE 中的值将被求和。
预先感谢,弗兰克
一种方法是使用grep定位以Aor结尾的行B并绘制结果。如果您知道字符行将以以下形式结束,则可以在带有 for 循环的单条情节线中执行此操作:
plot for [s in 'A B'] sprintf("<(grep -v '%s$' data.dat)", s) u 1:2 w l
Run Code Online (Sandbox Code Playgroud)
这会将您提供的数据(保存在 中data.dat)绘制为两条不同的线。
您还可以将 for 部分更改为[s in 'word1 word2 word3']您喜欢的任何其他字符串。如果您不知道字符/字行将以结尾,您可能需要先传递文件两次以确定 for 循环的字符串,然后第二次进行绘图。