在图形gnuplot中绘制线条和矢量

时间:2014-06-26 23:40:42

标签: gnuplot vector-graphics

大家好,每个人都知道如何做这种类型的图表。

我试图绘制线条和点的组合,但它仍然失败。

我想我已经设定了一个范围来绘制点以获得我下面的例子。

dat.txt

0.936   1.735E-5
0.9317  1.682E-5
0.9274  1.633E-5
0.9232  1.588E-5
0.9189  1.545E-5
0.9146  1.504E-5
0.9103  1.466E-5
0.9061  1.431E-5
0.9018  1.396E-5
0.8975  1.364E-5
0.8932  1.333E-5
0.889   1.304E-5
0.8847  1.277E-5

For Plot

set xl 'Potential / V'
set yl 'Current / A'
plot 'dat.txt' u 1:2 w l lw 2 lt -1,\
'dat.txt' u 1:2 w p pt 2 ti ''

如何绘制的示例

Graphical

1 个答案:

答案 0 :(得分:2)

如果你使用矢量,你可以实现你想要的。向量采用以下类型的参数:

plot 'mydata.dat' a:b:c:d with vectors

前两列ab是起点,最后两列cd是向量的相对坐标

因此,如果您可以从数据中计算出这些值,那么您应该能够获得所需的结果。

set xl 'Potential / V'
set yl 'Current / A'

定义可以使用的自定义箭头样式:

set style arrow 1 head back filled linetype 1 linecolor rgb "red"  
set xrange [0.88:0.94]

然后定义函数来计算先前的x,y值和增量

prev_x = NaN
prev_y = NaN
dx(x) = (x_delta = x-prev_x, prev_x = ($0 > 0 ? x : 1/0), x_delta)
dy(y) = (y_delta = y-prev_y, prev_y = ($0 > 0 ? y : 1/0), y_delta)

最后使用矢量命令

绘制它们
plot 'stats.dat' u 1:2 w l lw 2 lt -1, '' u (prev_x):(prev_y):(dx($1)):(dy($2)) every 2 w vectors arrowstyle 1 ti ''

enter image description here

修改

在OP提供完整数据here后,脚本已更改为以下内容:

set xl 'Potential / V'
set yl 'Current / A'

set style arrow 1 head back filled size screen 0.015,20,35 linetype 1 linecolor rgb "red"  

prev_x = NaN
prev_y = NaN

dx(x) = (xd = x-prev_x, prev_x = ($0 > 0 ? x : 1/0), xd)
dy(y) = (yd = y-prev_y, prev_y = ($0 > 0 ? y : 1/0), yd)

plot 'data.dat' u 1:2 w l lw 2 lt -1, '' u (prev_x):(prev_y):(dx($1)):(dy($2)) every 10 w vectors arrowstyle 1 ti ''

使用以下图表:

enter image description here