我已成功使用gnuplot绘制箱线图。但是现在我想坚持gnuplot以满足我所有的绘图需求,并希望做一些例如。棱镜可以做到:
http://www.graphpad.com/support/faqid/132/
我只有两列数据(之前和之后),并希望所有对都与一行相连。如果有人有任何想法,那就太好了。
答案 0 :(得分:2)
开箱即用是不可能的,所以需要一些摆弄。
xtics是手动设置的,0
是x
- '之前'的值,1
表示'之后'。这些数值必须在以后的图中明确使用。
这些线条标题为arrows
,没有头部。使用lc variable
(即linecolor variable
),我们可以使用using
语句的最后一列从相应的线型中选择颜色。
首先绘制'之前'点。很遗憾,没有选项pointtype variable
,因此我使用plot for
次迭代为每个点指定了不同的pointtype
(pt
)。
我使用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
你得到了结果:
另一种变体使用线条样式来设置颜色,线条类型和点类型。对于迭代,您必须明确使用ls (i+1)
,而对于vectors
,则使用as variable
(arrowstyle 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)
结果: