如何在数据文件gnuplot中的行中绘制直方图

时间:2015-05-25 17:06:08

标签: gnuplot histogram

t.dat文件如下所示:

              260.37
              260.04
              261.53
              261.32
              260.19
              260.49
              260.43
              260.59
              260.26
              260.68
              260.28
              259.93
              260.82
              259.50
              260.29
              260.52
              260.30
              259.91
              262.24
              260.58
              260.74
              260.22
              261.66
              260.31
              260.99
              259.79
              260.90
              259.88
              260.19
              261.50
              259.32
              260.79
              259.94
              260.35
              260.03
              260.07
              261.86
              261.09
              260.60
              260.15
               75.17
               75.16
               75.33
               75.31
               75.34
               75.04
               75.49
               75.25
               75.27
               75.32
               75.10
               75.75
               75.58
               74.86
               75.19
               75.44
               75.29
               75.31
               75.55
               75.91
               75.39
               75.65
               75.85
               75.67
               75.62
               74.87
               75.64
               75.69
               75.13
               77.76
               75.31
               74.87
               75.75
               75.27
               75.61
               74.84
               75.72
               75.40
               74.96
               75.33
               67.20
               67.26
               68.15
               68.67
               68.88
               67.56
               67.71
               66.87
               68.74
               67.32
               66.92
               69.62
               67.29
               66.87
               68.33
               67.73
               68.66
               68.75
               67.00
               67.22
               66.93
               68.81
               67.29
               67.18
               67.33
               67.91
               70.34
               67.15
               68.37
               69.60
               69.74
               69.62
               67.33
               66.79
               67.90
               67.39
               69.88
               68.48
               68.96
               67.36
               47.82
               47.54
               47.74
               47.95
               47.65
               47.71
               47.64
               47.71
               47.47
               48.19
               47.82
               48.06
               47.88
               48.22
               48.31
               47.58
               47.41
               47.85
               47.71
               47.93
               48.34
               47.95
               48.70
               47.58
               47.86
               47.96
               47.80
               48.00
               47.51
               47.56
               47.50
               47.52
               47.47
               47.76
               47.53
               48.27
               47.26
               47.79
               47.67
               47.57

目标是打印4个系列的直方图,每个直方图用空格分隔,每40行一组。因此直方图组1绘制了1:40行的数据,第二组绘制了41:80行的数据,依此类推。 到目前为止,我已经设法分别打印第一组直方图:

set boxwidth 0.9 relative
set style data histograms
set style fill solid 1.0 border -1
set xtics ("1" 20, "4" 60, "8" 100, "16" 140)
plot 't.dat' using 1 with boxes ls 6 axes x1y1

并打印连接的四个组:

plot 't.dat' using 1 every ::0::39 with boxes ls 6 axes x1y1

如何在同一个地块中绘制其他群体?

1 个答案:

答案 0 :(得分:0)

请注意,set style data histograms会被忽略,因为您使用with boxes覆盖它,boxeshistograms是不同的方法来绘制条形图分组和安排数据。

如果你可以用

绘制第一组
plot "t.dat" using 0:1 every ::0::39 with boxes

然后你可以用

绘制第二组
plot "t.dat" using 0:1 every ::40::79 with boxes

using 1,就像你使用的那样被gnuplot隐含地转换为using 0:1。 这两个图将重叠,因为第0列,即当前行的编号仅计算应用every过滤器后可用的行,因此在两种情况下,x值都从0变为39。要将两者都绘制在彼此之下,您必须将40添加到第二个图(或者41以使两者之间有一个小的差距:

plot "t.dat" using 0:1 every ::0::39 with boxes,\
     "" using ($0 + 41):1 every ::40::79 with boxes

现在,要绘制所有四个组,您可以展开此绘图命令以保持其他两个组,或者使用

迭代它们
set boxwidth 0.7 relative
set style fill solid 1.0 noborder
set xtics ("1" 19.5, "4" 60.5, "8" 101.5, "16" 142.5)
unset key 
plot for [i=1:4] 't.dat' using ($0+(i-1)*41):1 every ::((i-1)*40)::(i*40-1) with boxes lt i

enter image description here