我不熟悉我正在尝试做的术语(这使得很难找到解决方案),但我认为你可以从输入文件中找出我想要做的事情。输入文件是.txt,它是制表符分隔的。
#input file begins here
21 00 0.005 12.0 0.006621 0.35365 0.16718
22 00 0.005 14.0 0.00662 0.34899 0.17206
23 00 0.005 16.0 0.006645 0.34523 0.17739
24 00 0.005 18.0 0.006696 0.33956 0.1815
25 00 0.005 20.0 0.006755 0.33477 0.18692
26 00 0.005 22.0 0.006797 0.33084 0.19178
27 00 0.005 24.0 0.006892 0.3265 0.19683
28 00 0.005 26.0 0.006965 0.32093 0.20256
29 00 0.005 28.0 0.007072 0.31631 0.20747
31 00 0.007 12.0 0.006158 0.38969 0.12999
32 00 0.007 14.0 0.006124 0.38578 0.13541
33 00 0.007 16.0 0.006136 0.38161 0.14018
34 00 0.007 18.0 0.006147 0.37697 0.1452
35 00 0.007 20.0 0.006193 0.37356 0.14999
36 00 0.007 22.0 0.006238 0.3673 0.15499
37 00 0.007 24.0 0.006276 0.36387 0.16037
38 00 0.007 26.0 0.00634 0.35855 0.16595
39 00 0.007 28.0 0.006417 0.35388 0.17118
40 00 0.007 30.0 0.006497 0.34844 0.17673
我想在图表上区分这两个数据块。该图将是2D图,顶部块的点为红色,底部块的点为蓝色。总输入文件大约1000行,具有不同的垂直长度;但是,它们都用换行符(\ n)进行了适当的分隔。
我正在绘制第4列和第6列,数据集名称(a.k.a.图例标签)为第3列。
答案 0 :(得分:0)
以下是解决不同观点的方法:
您的输入文件确实包含两个数据块,可以使用every
进行选择以进行绘图:every :::0::0
仅选择第一个块,请参阅文档或help every
。
要使用红线颜色,只需使用例如
plot 'file.txt' linecolor rgb 'red'
要选择第4列和第6列进行绘图,请使用using 4:6
。
使用第三列的值作为键标签并不简单。如果您知道它是一个数值,那么您可以使用stats
命令提取这些单个值(请参阅例如Gnuplot: How to load and display single numeric value from data file):
stats 'file.txt' using 3 every :::0::0 nooutput
key1 = sprintf('%.3f', STATS_max)
stats 'file.txt' using 3 every :::1::1 nooutput
key2 = sprintf('%.3f', STATS_max)
如果列也可以包含其他值,或者您希望保持相同的格式,则需要外部工具来提取标题的值:
key1 = system('head -1 file.txt | cut -f 3')
key2 = system('tail -1 file.txt | cut -f 3')
所以,你的脚本可能如下所示:
stats 'file.txt' using 3 every :::0::0 nooutput
key1 = sprintf('%.3f', STATS_max)
stats 'file.txt' using 3 every :::1::1 nooutput
key2 = sprintf('%.3f', STATS_max)
plot 'file.txt' using 4:6 every :::0::0 linecolor rgb 'red' title key1,\
'' using 4:6 every :::1::1 linecolor rgb 'blue' title key2