gnuplot可以分割数据吗?

gnuplot可以分割数据吗?,gnuplot,Gnuplot,我有以下格式的一些数据: 10.0 1 a 2 10.2 2 b 2 10.4 3 a 2 10.6 4 b 2 10.8 4 c 10 11.0 4 c 20 。。。其中第三列基本上表示属于“单独”数据集;所以我想展示,比如说,那些属于红色“a”的样本,那些属于蓝色“b”的样本等等(使用gnuplotversion4.4patchlevel2) 我设法将“示例”样式作为“脉冲”和“点”样式的混合;via设法采用了不同的颜色——这就是我取得的成绩(): 。。。然后可以“单独”绘制出来——但我想

我有以下格式的一些数据:

10.0 1 a 2
10.2 2 b 2
10.4 3 a 2
10.6 4 b 2
10.8 4 c 10
11.0 4 c 20
。。。其中第三列基本上表示属于“单独”数据集;所以我想展示,比如说,那些属于红色“a”的样本,那些属于蓝色“b”的样本等等(使用
gnuplot
version4.4patchlevel2)

我设法将“示例”样式作为“
脉冲
”和“
”样式的混合;via设法采用了不同的颜色——这就是我取得的成绩():

。。。然后可以“单独”绘制出来——但我想知道
gnuplot
是否有这样的内部设施

提前感谢您的回答,
干杯

PS:一些对我有用的链接:

编辑:只是想发布一篇文章,我正在接近以我想要的方式可视化数据:

我有点想将标签(添加的“点”作为矩形背景)视为中或中的节点,并在它们之间设置这些漂亮的连接线——但即使这样也对我有很大帮助:)请注意,这是
wxt
输出-其他终端,如
png
pdfcairo
将完全混乱地呈现方框/标签(需要手动调整)

你可以用awk来做这个。我不知道我是否会称之为gnuplot的“一些内部设施”,但我认为它做了您希望它做的事情:

使用数据文件data.csv:

10.0 1 a 2
10.2 2 b 2
10.4 3 a 2
10.6 4 b 2
10.8 4 c 10
11.0 4 c 20
用图形绘制数据

plot "<awk '{if($3 == \"a\") print $1,$2}' Data.csv" u ($1 - 10):2 w lp, \
     "<awk '{if($3 == \"b\") print $1,$2}' Data.csv" u ($1 - 10):2 w lp, \
     "<awk '{if($3 == \"c\") print $1,$2}' Data.csv" u ($1 - 10):2 w lp
plot”你可以用awk来做这件事。我不知道我是否会称之为gnuplot的“一些内部设施”,但我认为它做了你希望它做的事情:

使用数据文件data.csv:

10.0 1 a 2
10.2 2 b 2
10.4 3 a 2
10.6 4 b 2
10.8 4 c 10
11.0 4 c 20
用图形绘制数据

plot "<awk '{if($3 == \"a\") print $1,$2}' Data.csv" u ($1 - 10):2 w lp, \
     "<awk '{if($3 == \"b\") print $1,$2}' Data.csv" u ($1 - 10):2 w lp, \
     "<awk '{if($3 == \"c\") print $1,$2}' Data.csv" u ($1 - 10):2 w lp

绘图“这是可能的。Gnuplot有一个三元运算符,如C中的。Gnuplot还将忽略未定义的表达式,例如负数的对数或除以零。把这些放在一起,您可以通过为那些不满足条件的线生成无效数字,从而只绘制那些满足某些特定条件的线。将问题简化一点,方法如下所示:

plot "inline.dat" using (strcol(3) eq 'a' ? $1 : 1/0):2

这是可能的。Gnuplot有一个三元运算符,如C中的。Gnuplot还将忽略未定义的表达式,例如负数的对数或除以零。把这些放在一起,您可以通过为那些不满足条件的线生成无效数字,从而只绘制那些满足某些特定条件的线。将问题简化一点,方法如下所示:

plot "inline.dat" using (strcol(3) eq 'a' ? $1 : 1/0):2

太棒了——非常感谢你的回答,@Michael J.Barber;这看起来正是我要找的。干杯请注意:带有
1/0
的条件绘图将干扰
行点
渲染;在这种情况下,必须调用外部程序-在@sdaau中讨论过,对于使用
行点
进行条件打印,不需要(或曾经需要)外部程序。甚至不适用于gnuplot 4.4或4.6。这里有一个简单的解决方法——非常感谢你的回答,@Michael J.Barber;这看起来正是我要找的。干杯请注意:带有
1/0
的条件绘图将干扰
行点
渲染;在这种情况下,必须调用外部程序-在@sdaau中讨论过,对于使用
行点
进行条件打印,不需要(或曾经需要)外部程序。甚至不适用于gnuplot 4.4或4.6。有一个简单的解决方法,非常感谢@Woltan-另一种方法是使用类似
的东西调用shell!grep“a”inline.dat>a.dat
;然后使用各自的表格进行单独显示;但是我认为《代码》GNUTRAG/<代码>三元操作符的使用方式是“原生”的方式。干杯@似乎有很多解决这个“问题”的方法。和往常一样,你选择哪一个取决于你的品味。但我发现,为了不绘制点而生成无效数字有点尴尬。但这又是一个品味的问题^^你是对的;但当我说“native”时,我只是指该解决方案不涉及系统/shell调用(即使它不是最佳策略)。。。干杯非常感谢@Woltan-另一种方法是使用类似
的东西调用shell!grep“a”inline.dat>a.dat
;然后使用各自的表格进行单独显示;但是我认为《代码》GNUTRAG/<代码>三元操作符的使用方式是“原生”的方式。干杯@似乎有很多解决这个“问题”的方法。和往常一样,你选择哪一个取决于你的品味。但我发现,为了不绘制点而生成无效数字有点尴尬。但这又是一个品味的问题^^你是对的;但当我说“native”时,我只是指该解决方案不涉及系统/shell调用(即使它不是最佳策略)。。。干杯