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

如何用gnuplot绘制分波态密度(PDOS)?脚本运行异常求助

分波态密度(PDOS)绘制问题修正

我尝试用以下gnuplot脚本绘制分波态密度(PDOS),但实际输出与预期效果不符:

原脚本

set term postscript enhanced colour
set output 'pdos.ps'
set key box font 'Helvetica, 12' top right noautotitle
set grid
set xlabel "E-E_f [eV]" font 'Helvetica, 20'
set ylabel "PDos(states/ev)" font 'Helvetica, 20'
set xzeroaxis
set xrange[-6:4]
set yrange[*:*]
plot 'Co_d.dat' u 1:2 w l lc "green", 'Mn_d.dat' u 1:2 w l lc "red', 'Sb_p.dat' u 1:2 w l lc "#4169E1"
set output

效果对比

  • 预期效果:呈现三条清晰可区分的曲线,分别对应Co d、Mn d、Sb p轨道的态密度,横轴标注为E-E_f [eV],纵轴标注PDOS(states/eV),费米能级处有零轴,网格可见,图例明确区分各组分。
  • 实际效果:仅显示部分曲线,样式异常,未完整呈现三条PDOS曲线,整体布局不符合预期。

问题排查与修正方案

  1. 语法错误修复:原脚本中lc "red'缺少闭合双引号,导致gnuplot解析失败,部分曲线无法正常渲染。
  2. 图例优化:原脚本使用noautotitle关闭自动图例,导致无法区分各曲线,建议手动添加标题。
  3. 脚本可读性优化:用反斜杠换行拆分长命令,提升脚本易读性。

修正后的脚本

set term postscript enhanced colour
set output 'pdos.ps'
set key box font 'Helvetica, 12' top right
set grid
set xlabel "E-E_f [eV]" font 'Helvetica, 20'
set ylabel "PDOS(states/eV)" font 'Helvetica, 20'
set xzeroaxis
set xrange[-6:4]
set yrange[*:*]
plot 'Co_d.dat' u 1:2 w l lc "green" title "Co d", \
     'Mn_d.dat' u 1:2 w l lc "red" title "Mn d", \
     'Sb_p.dat' u 1:2 w l lc "#4169E1" title "Sb p"
set output

额外检查项

  • 确认Co_d.dat、Mn_d.dat、Sb_p.dat数据文件格式正确,每行包含两列数值(第一列为能量,第二列为PDOS值),无空行或异常字符。
  • 若仍有问题,可尝试单独绘制某一个数据文件,排查是否为数据本身的问题。

内容的提问来源于stack exchange,提问作者Binay Limbu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:20:20