使用 gnuplot 根据列值绘制多个图形

Plotting multiple graphs depending on column value with gnuplot

我有以下数据,我不想使用 GNUPLOT 绘制这些数据:

#TIME #VALUE #SOURCE
1 100 A
1 88 B
2 115 A
2 100 B
3 130 A
3 210 B

我想绘制两条线,具体取决于#SOURCE 列的值。 A 一行,B 一行。这对 GNUPLOT 是否可行?如果可行,如何实现?

是否也可以根据#TIME 列绘制#VALUE 列的总和?意思是,对于#TIME 中的所有相等条目,将对#VALUE 中的值求和。

提前致谢, 弗兰克

一种方法是使用 grep 定位以 AB 结尾的行并绘制结果。如果您知道字符行将以以下结尾,则可以在带有 for 循环的单个绘图行中执行此操作:

plot for [s in 'A B'] sprintf("<(grep -v '%s$' data.dat)", s) u 1:2 w l

这会将您提供的数据(保存在 data.dat 中)绘制为两条不同的线。

您也可以将 for 部分更改为 [s in 'word1 word2 word3'] 或您喜欢的任何其他字符串。如果您不知道 character/word 行将以结尾,您可能需要先传递文件两次以确定 for 循环的字符串,然后再传递一次以进行绘图。