在直方图(gnuplot)中绘制两个点线?

时间:2013-07-03 14:56:47

标签: gnuplot

我想通过gnuplot在直方图中绘制两个点线,结果图表并不是我想要的。实际上,我希望两个点线(粉红色和浅绿色点)中的点对齐两种类型的柱子的中心,因此浅绿色的一个保持静止,而粉红色的一个向右移动一点,就像黑色的一个我画了。

'test.dat'如下:

1   10  15  8   22 
2   11  19  7   21
3   9   14  7   19
4   10  21  8   23
5   9   17  9   21

和'plt'文件:

set style data histogram
unset key 
set yrange[0:12]
set y2range[0:25]

plot "test.dat" using 2:xticlabel(1) axis x1y1,\
"test.dat" using 3:xticlabel(1) axis x1y2 with linespoints,\
"test.dat" using 4:xticlabel(1) axis x1y1,\
"test.dat" using 5:xticlabel(1) axis x1y2 with linespoints

enter image description here

1 个答案:

答案 0 :(得分:1)

我的回答基于this contribution,它使用方框而不是直方图。好处是,您确切地知道这些盒子放置的位置,您可以利用这些盒子绘制线条图。

以下是代码:

dx=1.
n=2.
total_box_width_relative=0.25
gap_width_relative=0.1
d_width=(gap_width_relative+total_box_width_relative)*dx/n  
set boxwidth total_box_width_relative/n relative  
set style fill transparent solid 0.5 noborder

plot "test.dat" u ($1):2 w boxes lc rgb"green" notitle,\    
     "test.dat" u ($1+d_width):4 w boxes lc rgb"red" notitle,\
     "test.dat" u ($1):3 w linespoints notitle,\              
     "test.dat" u ($1+d_width):5 w linespoints notitle        

set yrange [0:15]
replot

对代码的一些解释:

  • 应根据您的数据文件选择dx,否则框的间距将关闭。
  • 框的数据集数量由n
  • 给出
  • total_box_width_relativegap_width_relative控制框的轴向和间距
  • 两个set ...命令控制框的外观
  • 在plot命令中你现在必须分开:你用原始的第1列数据调用一组框和行:($1),但是,对于第二组框和相应的行,你选择你的定义轴向偏移:($1+d_width) - 这将确保线图中的数据点与框对齐
  • 可能需要包含set yrange命令

情节将如下所示:

enter image description here

注意
我根据您提供的数据更改了线图的数据。这样做只是为了使点更靠近方框并说明效果。