如何使用gnuplot绘制能量图

如何使用gnuplot绘制能量图,gnuplot,Gnuplot,我有一个数据文件: 0 0 3 -0.17 6 -0.05 0 0 3 -0.23 6 0.90 0 0 3 -0.41 6 0.50 0 0 3 -0.50 6 -0.33 0 0 3 -0.20 6 0.80 我想画一个这样的图,它连接线中的每个点。你能告诉我怎么做吗? 以下建议使用带有boxyError的打印样式,带有向量的打印样式和带有标签的打印样式。 零级别获取最后一个条目的颜色,因为所有内容都是在彼此的顶部绘制的。检查以下示例作为进一步调整的起点 代码: ### energy

我有一个数据文件:

0 0 3 -0.17 6 -0.05
0 0 3 -0.23 6  0.90
0 0 3 -0.41 6  0.50
0 0 3 -0.50 6 -0.33
0 0 3 -0.20 6  0.80
我想画一个这样的图,它连接线中的每个点。你能告诉我怎么做吗?

以下建议使用带有boxyError的打印样式
带有向量的打印样式
和带有标签的打印样式
。 零级别获取最后一个条目的颜色,因为所有内容都是在彼此的顶部绘制的。检查以下示例作为进一步调整的起点

代码:

### energy diagram
reset session

$Data <<EOD
0 0 3 -0.17 6 -0.05   A_{one}
0 0 3 -0.23 6  0.90   B_{two}
0 0 3 -0.41 6  0.50   C_{three}
0 0 3 -0.50 6 -0.33   D_{four}
0 0 3 -0.20 6  0.80   E_{five}
EOD

set key noautotitle
set xrange [-1:8]

myWidth = 0.3

plot for [i=1:3] $Data u (column(2*i-1)):(column(i*2)):(myWidth):(0):0:xtic(i*2-1) w boxxy lw 3 lc var, \
     for [i=1:2] '' u (column(2*i-1)+myWidth):(column(i*2)): \
         (column(2*i+1)-column(2*i-1)-2*myWidth):(column(i*2+2)-column(i*2)):0 w vec nohead lw 1 dt 3 lc var, \
     '' u 5:6:7:0 w labels offset 6,0 tc var font ",16"
### end of code
### energy diagram with individual offset of labels
reset session

$Data <<EOD
0 0 3 -0.17 6 -0.05   A_{one}    0
0 0 3 -0.23 6  0.90   B_{two}    0.05
0 0 3 -0.41 6  0.50   C_{three}  0
0 0 3 -0.50 6 -0.33   D_{four}   0
0 0 3 -0.20 6  0.85   E_{five}  -0.05
EOD

set key noautotitle
set xrange [-1:8]
myWidth = 0.3

plot for [i=1:3] $Data u (column(2*i-1)):(column(i*2)):(myWidth):(0):0:xtic(i*2-1) w boxxy lw 3 lc var, \
     for [i=1:2] '' u (column(2*i-1)+myWidth):(column(i*2)): \
         (column(2*i+1)-column(2*i-1)-2*myWidth):(column(i*2+2)-column(i*2)):0 w vec nohead lw 1 dt 3 lc var, \
     '' u 5:($6+$8):7:0 w labels offset 6,0 tc var font ",16"
### end of code
能量图 重置会话
$Data Hi@theozh,如果两个条靠近,则键会粘在一起。你知道如何分割它们吗?@BinhThien然后你必须添加单个偏移(仅用于标签)。见修改后的答案。