在gnuplot中绘制“之前和之后”图表?

时间:2013-09-11 21:28:53

标签: plot gnuplot

我已成功使用gnuplot绘制箱线图。但是现在我想坚持gnuplot以满足我所有的绘图需求,并希望做一些例如。棱镜可以做到:

http://www.graphpad.com/support/faqid/132/

我只有两列数据(之前和之后),并希望所有对都与一行相连。如果有人有任何想法,那就太好了。

1 个答案:

答案 0 :(得分:2)

开箱即用是不可能的,所以需要一些摆弄。

  • xtics是手动设置的,0x - '之前'的值,1表示'之后'。这些数值必须在以后的图中明确使用。

  • 这些线条标题为arrows,没有头部。使用lc variable(即linecolor variable),我们可以使用using语句的最后一列从相应的线型中选择颜色。

  • 首先绘制'之前'点。很遗憾,没有选项pointtype variable,因此我使用plot for次迭代为每个点指定了不同的pointtypept)。

  • 我使用stats命令确定要绘制的点数。要获得总计数,我必须总结records,它们是内部点和outofrange点,因为分类是根据第一列的值完成的,这与“手册”冲突''之前'和'之后'标签的'xtics设置。

这些是要点。当然,还有很多其他的可能性(使用线型等),但应该是一个很好的起点。

脚本是:

reset
file='beforeafter.txt'

set xtics ('Before' 0, 'After' 1)
set xrange [-0.2:1.2]
set offset 0,0,0.2,0.2

stats file nooutput
cnt = int(STATS_records+STATS_outofrange)

plot for [i=0:cnt-1] file using (0):1 every ::i::i with points lc i+1 pt (6+i) ps 2 t '',\
     for [i=0:cnt-1] file using (1):2 every ::i::i with points lc i+1 pt (6+i) ps 2 t '',\
     file using (0):1:(1):($2-$1):($0+1) with vectors nohead lc variable t ''

使用测试数据beforeafter.txt

1  5.5
2  0.3
3  3

你得到了结果:

enter image description here

使用线型

另一种变体使用线条样式来设置颜色,线条类型和点类型。对于迭代,您必须明确使用ls (i+1),而对于vectors,则使用as variablearrowstyle variable)。使用lc variable时,无法为箭头设置不同的虚线模式。

因此,在我看来,这是一个更具可读性和灵活性的变体:

reset
set termoption dashed
file='beforeafter.txt'

set xtics ('Before' 0, 'After' 1)
set xrange [-0.2:1.2]
set offset 0,0,0.2,0.2

stats file nooutput
cnt = int(STATS_records+STATS_outofrange)

set style line 1 lt 1 pt 5 ps 2 lw 2 lc rgb '#AE1100'
set style line 2 lt 2 pt 7 ps 2 lw 2 lc rgb '#6EB043'
set style line 3 lt 3 pt 9 ps 2 lw 2 lc rgb '#7777ff'

set for [i=1:3] style arrow i ls i nohead

unset key
plot file using (0):1:(1):($2-$1):($0+1) with vectors as variable,\
     for [i=0:cnt-1] file using (0):1 every ::i::i with points ls (i+1),\
     for [i=0:cnt-1] file using (1):2 every ::i::i with points ls (i+1)

结果:

enter image description here