0

我不熟悉我正在尝试做的事情的术语(这使得很难找到解决方案),但我认为你可以从输入文件中弄清楚我想要做什么。输入文件是制表符分隔的 .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 列,数据集名称(又名图例标签)为第 3 列。

4

1 回答 1

0

以下是解决不同点的方法:

  1. 您的输入文件确实包含两个数据块,可以选择every用于绘图:every :::0::0仅选择第一个块,请参阅文档或help every.

  2. 要使用红线颜色,只需使用例如

    plot 'file.txt' linecolor rgb 'red'
    
  3. 要选择第 4 列和第 6 列进行绘图,请使用using 4:6.

  4. 使用第三列的值作为关键标签并不简单。如果您知道它是一个数值,那么您可以使用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
于 2013-11-04T08:53:13.550 回答