如何使用 gnuplot 绘制能量图
How to plot energy diagram using 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
我想绘制这样的图,它连接线中的每个点。你能告诉我怎么做吗?
以下建议使用绘图样式 with boxxyerror
、with vectors
和 with labels
。
零级别获得最后一个条目的颜色,因为所有内容都绘制在彼此之上。检查以下示例作为进一步调整的起点。
代码:
### 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
结果:
加法:
根据您的评论:如果级别关闭使得标签重叠,您可以添加单独的偏移量(此处为第 8 列)。
检查以下示例,其中修改了数据,级别 B 和 E 非常接近。
代码:
### 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:(+):7:0 w labels offset 6,0 tc var font ",16"
### end of code
结果:
我有数据文件:
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
我想绘制这样的图,它连接线中的每个点。你能告诉我怎么做吗?
以下建议使用绘图样式 with boxxyerror
、with vectors
和 with labels
。
零级别获得最后一个条目的颜色,因为所有内容都绘制在彼此之上。检查以下示例作为进一步调整的起点。
代码:
### 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
结果:
加法:
根据您的评论:如果级别关闭使得标签重叠,您可以添加单独的偏移量(此处为第 8 列)。 检查以下示例,其中修改了数据,级别 B 和 E 非常接近。
代码:
### 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:(+):7:0 w labels offset 6,0 tc var font ",16"
### end of code
结果: