计算化学公社

标题: EnergyDiagramDraw:一个开箱即用的能量折线图绘制程序 [打印本页]

作者
Author:
Kamistry    时间: 2023-11-15 09:36
标题: EnergyDiagramDraw:一个开箱即用的能量折线图绘制程序
本帖最后由 Kamistry 于 2023-11-22 08:45 编辑

EnergyDiagramDraw

********20231116更新********
允许改变颜色

关于
EnergyDiagramDraw 是我最近用python写的开箱即用的能量折线图绘制软件。本帖子将持续更新,欢迎关注或提出建议(GitHub issue或者直接在这里回复)。
GitHub地址:linzihan322/EnergyDiagramDraw: A ready-to-use energy diagram drawing program (github.com)

需求
Python 3.9
ChemDraw (查看结果需要)

使用方法
你可以自定义输入和输出文件名。 对于输入文件,文件后缀名可以任意(但强烈建议使用.edf,表示EnergyDiagramFile);但输出文件的后缀名必须为.cdxml。 如果输出文件名被省略,则程序自动将输入文件后缀名由.edf更改为.cdxml作为输出文件名(对于其他后缀名,则直接在后面加上.cdxml)。

假设输入文件为INPUT.edf,你可以执行以下命令生成能量图。注意:对于某些系统,你可能需要将python替换为python3。

  1. python EnergyDiagramDraw.py INPUT.edf
  2. python EnergyDiagramDraw.py INPUT.edf OUTPUT.cdxml
复制代码


.edf文件的结构
一个完整的.edf文件包含三个部分:序言区,设置、数据和标签以及注释部分。我是根据gjf的格式来设计的,平时使用Gaussian比较多的话,会觉得这个格式很熟悉。link0,关键词,坐标数据。区别在于#开始的设置行是和序言区而不是数据行空行隔开。

  1. 序言区 - 可选,由“%”起始,用来设置图的整体属性
  2. [空行]
  3. #设置行 - 可选,由“#”起始,用来改变每个数据集绘图设置
  4. 数据行
  5. 标签行 - 可选
  6. [空行] - 如果你有更多的数据,只需要重复这个部分
  7. #设置行
  8. 数据行
  9. 标签行 - 可选
  10. [空行]
  11. [空行] - 程序会在这里停止解析
  12. 注释部分 - 你可以在这写任何内容
复制代码


序言区
序言可以改变图的整体属性。 每个序言语句由%起始,并单独成一行。 你可以以任意顺序来写一条或多条序言语句,而被省略的序言语句将使用默认值。

长格式 短格式 默认值 注释
%width= %w= 400 设置图的宽度
%height= %h= 300 设置图的高度
%length= %l= 30 设置能量线的长度
%padding %pd 40 设置图到页面边缘的距离
%pagewidth= %pw= 540 设置页面宽度
注意这个值比(width + 2 * padding)小的时候将被忽略
%pageheight= %ph= 720 设置页面高度
注意这个值比(height + 2 * padding)小的时候将被忽略
%resetsettings %reset 为每个数据集重置设置


(, 下载次数 Times of downloads: 14)

设置,数据和标签
设置行由#起始,所有设置项写在一行之中,并用空格隔开。设置行是可选的,你可以直接省略这一行,或者简单的只写一个#。以下是具体的设置项:

设置项 允许的取值 默认值注释
decimal= 0-9 1 设置图上显示的小数位数
numberfont= normal/bold normal 设置数字的字体(正常或粗体)
labelfont= normal/bold bold 设置标签的字体(正常或粗体)
color= (r,g,b) rgb为0,1或0和1之间至多3位小数
000000-FFFFFF(大小写不敏感)
(0,0,0) 设置能量线、数字、标签的颜色


未出现的设置项将保持不变,即会继承之前的设置。 你可以在序言区写上%reset来改变这一行为。

设置行之后的一行是数据行,数据之间用逗号隔开。 为了对齐,你也可以加入空格或制表符。 再下面一行是可选的标签行。 无论是数据行还是标签行,你都可以留空来跳过一些点。 但是你必须保证数据和标签一一对应,数量一致(包括留空的点)。

如果你有更多的数据想绘制在同一张图中,只需要空一行,再重复这个部分即可。

注释部分
你可以用两个连续的空行来标记结束位置。 在这之后的内容将被程序忽略,因此你可以在这里写任何你想写的内容,比如对这个文件的注释。 如果你不打算写任何内容,你甚至可以省略那两个空行。



.edf文件的例子


最简单例子
最简单的.edf文件只有一行,只包含数据:

  1. 1,2,3,4,5
复制代码

(, 下载次数 Times of downloads: 17)

稍复杂的例子

  1. %w=500
  2. %h=150
  3. %l=30
  4. %pd=50
  5. %reset

  6. #labelfont=normal color=(1,0.55,0)
  7. 10.0,20.0,30.0,40.0,50.0
  8. you,can,skip,some,data

  9. ,10.0,,-5.0,15.0,-5.0

  10. #numberfont=bold decimal=2 color=0094FF
  11. 1,2,3,4,5,6,7
  12. Label,can,be,empty,,Like,this


  13. SOME COMMENTS...
复制代码

(, 下载次数 Times of downloads: 16)

更多例子请查看GitHub链接examples文件夹中的文件。






作者
Author:
skdmax    时间: 2023-11-15 14:27
非常棒!
作者
Author:
Kamistry    时间: 2023-12-1 00:16
正在考虑多组数据时数字、标签可能重叠的问题,想问问大家有什么好的想法可以优雅地解决这个问题
作者
Author:
flyingchow    时间: 2023-12-7 00:08
李元鹤那个做energy diagram的GUI那么好用,为什么还要重复造轮子呢?
作者
Author:
AndrewX    时间: 2023-12-7 13:25
同意楼上,楼主可以考虑将liyuanhe的细节问题进一步解决一下,增强一下功能,就很棒了




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3