You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用gnuplot绘制能级图:如何实现左侧显示轨道编号的水平棒状图

解决Gnuplot水平棒状图的设置问题

我来帮你调整gnuplot的参数,实现左侧显示轨道编号的水平棒状图!你之前得到点图的原因是默认绘图样式是points,且没有指定水平方向和坐标轴映射,下面是具体的解决步骤和完整脚本:

核心思路

要实现目标,需要做这几个关键调整:

  • 改用水平棒图样式(而非默认点图)
  • 交换数据列的映射:将能量作为x轴,轨道编号作为y轴的位置
  • 让y轴刻度直接显示轨道编号(而非默认的连续整数)

完整示例脚本

假设你的数据文件名为orbitals.dat,格式如下(制表符分隔):

1	-13.6
2	-3.4
3	-1.51
4	-0.85
5	-0.54

对应的gnuplot脚本:

# 1. 设置棒图样式
set style data boxes
set style fill solid 0.7  # 设置棒的填充透明度,0.7是适中的取值
set boxwidth 0.5          # 调整棒的宽度,避免太宽或太窄

# 2. 配置坐标轴
set ylabel "轨道编号"       # y轴标签
set xlabel "能量 (eV)"      # x轴标签
set ytics nomirror         # 只在左侧显示y轴刻度(默认左右都显示)
set yrange [0.5:*]         # 让第一个棒和顶部之间留出一点空间,避免贴边

# 3. 关键绘图命令
# using 2:1 → 用第二列(能量)做x轴,第一列(轨道编号)做y轴位置
# ytic(1) → 让y轴刻度显示第一列的轨道编号
# with boxes horizontal → 指定绘制水平棒图
plot 'orbitals.dat' using 2:1:ytic(1) with boxes horizontal title "轨道能量分布"

关键参数解释

  • with boxes horizontal:这是实现水平棒图的核心,告诉gnuplot绘制水平方向的矩形棒,而非垂直棒或点
  • using 2:1:默认using x:y,这里我们交换了列顺序,把能量(第二列)作为x轴,轨道编号(第一列)作为y轴的位置
  • ytic(1):强制y轴的刻度文本使用数据第一列的数值,这样即使轨道编号不连续(比如1,3,5),也能准确显示

额外优化选项

如果需要进一步美化图表,可以添加这些设置:

  • 修改棒的颜色:set style fill solid 0.7 color "#2E86AB"(用十六进制颜色码指定)
  • 调整x轴范围:set xrange [-15:0](如果你的能量都是负数,限定x轴范围更美观)
  • 隐藏边框:set border 3(只显示底部和左侧边框,减少干扰)

内容的提问来源于stack exchange,提问作者Jacek Kowalski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 19:28:13