本帖最后由 liyuanhe211 于 2018-2-15 02:09 编辑
######## UPDATE ########
本程序已更新3.0版本,见下文:
http://bbs.keinsci.com/thread-9256-1-1.html
######## UPDATE ########
######## UPDATE ########
2016.3.1 更新2.0:
增加自定义纵坐标文字
增加了拖动数值的功能,解决数值overlap
解决了原有负数区域Tag拖动后消失的Bug(Matplotlib库的问题)
具体情况与新下载地址见本文末尾
######## UPDATE ########
----------------------------------------------------------- 原文↓ ----------------------------------------------------------- 火车上闲得无聊,用 Python+PyQt5+matplotlib 写了一个给自己用的、绘制能量折线图(Energy Profile)的小工具,可以做出如下的图。
在群里显摆了一下,竟然有很多人想要,以及发现有至少4人竟然一直用 ChemDraw+鼠标+眼 来做类似的图。。。故编译成 exe 传上来(python本身不需要编译,但源码运行需要用户安装python和相应库)。
这组数据是本组之前一篇文章里的数据(10.1038/ncomms9617),稍微调一调,放到ChemDraw里画上结构,估计可以达到发表的标准,原文中的图如下:
(P.S. 个人十分讨厌 kCal/mol 这个非 SI 非 au 单位)
使用方法:
下载后解压缩,可得到3个文件夹。exe 是 ./Packed/Draw_Energy_Diagram.exe, 源码在SourceCode文件夹里, Example里有一些实例。
程序界面如下,读取的输入是 excel 文件(内容下文说),可以用 Load 按钮打开,或者直接拖到 Drop Area 里。
随后就会显示对应的图片。可以通过缩放窗口、或使用放大镜工具调整图片的范围和长宽比。按保存可以将当前状态存为多种图片文件(推荐png)
下面是对应于上图的 excel 输入:
- 1~2行(可以是任意多行):
- A列为颜色声明(K: 黑色,R: 红色,其他代码见下),指认该行的颜色。
- B,C,D...为各路径的能量。
- 3行:
- 一个空行(分割数据部分和Tag部分)
- 4~5行(行数与数据部分对应):
- 数据部分,每个态对应的tag
复制代码
这种输入格式其实有点奇怪,因为它其实是我的另一个程序的输出格式。。。
- #DDEEFF: Arbitrary RGB Color
- b: blue
- g: green
- r: red
- c: cyan
- m: magenta
- y: yellow
- k: black
- w: white (这个显示不出来。。。)
复制代码
保存为png后,可以直接用ChemDraw打开,随后开始在图上绘制分子结构:
这个程序初衷是个自用软件,没想发布,可能有其他Bug。有问题请先看Example。之后可直接在本帖反馈,反馈时上传自己的Excel文件。
当两个Tag几乎完全重合时,用鼠标拖动会同时拖动两个Tag。暂时可以放大后、脱开、再缩小;或直接把两个Tag都拖到一边,画图里删了它自己加两个。暂时没想到特别好的解决方法。
如下图,有些时候Tag之间会相互重叠,用鼠标可以拖动Tag调整位置。
(然而,调整位置这个功能本身也有bug,如果 Tag 对应的值是负数,Tag拖动之后会消失 (╯﹏╰)b,就变成本帖第一张图的样子了,这是 Matplotlib 库本身的问题,不知如何解决。在正数区域是正常的,如上图显示不同颜色的例子中就是拖动过的。)
有类似情况请自行在ChemDraw等软件里补上几个Tag
################################ UPDATE ################################
2016.3.1,2.0版本新增:
- 现在可以拖动数值Tag以解决能级接近时,数值 Tag overlap的问题;同时解决有人希望将数值放在能级线 左边/右边/下边。。。
- 可以定义纵坐标内容,在程序目录下,有一文本文件 Energy_Diagram_Y_Axis_Text.txt,修改其中的文字即可显示在Y轴上
######## UPDATE ########
下方地址已失效,本程序已更新3.0版本,见下文:
http://bbs.keinsci.com/thread-9256-1-1.html
######## UPDATE ########
|