计算化学公社

 找回密码 Forget password
 注册 Register
Views: 2374|回复 Reply: 9
打印 Print 上一主题 Last thread 下一主题 Next thread

[辅助/分析程序] [更新至v1.2版本]用于绘制曲线样式的反应能量变化图的小程序

  [复制链接 Copy URL]

47

帖子

1

威望

1850

eV
积分
1917

Level 5 (御坂)

本帖最后由 KAIMISITERUI 于 2024-12-9 19:08 编辑

v1.2版本更新:
打包好的可执行exe文件:

重点更新:1.修复了调整显示页面的大小会影响显示效果的问题,新版本可以随意修改页面大小和比例了。
2.优化了导出cdxml文件的页面数量,使之更加合理。
3.修复了表格中有空行时导出数据会报错的问题。
4.如果有多个标志处于相同的位置,现在只会绘制一个

新增功能:
1. 重新调整了底部工具栏的代码,现在所有功能都可以正常使用了
1. 点击小房子按钮现在可以正常显示完整视图,效果等同于Show All
2. 前进后退按钮用于调整到前/后一个视角
3. 十字按钮左键用于拖动图像,右键拖动用于缩放,鼠标滚轮也可以缩放
4. 放大镜按钮用于矩形缩放
5. 滑块按钮用于调整显示范围
6. 点击保存图片按钮会出现对话框,输入ppi数值(比如一般期刊要求是300),可以直接保存高清大图。

2. 新增Show Grid选项,可以选择是否显示网格线
3. 表格区域现在可以右键点击数据区域的单元格,弹出菜单,此时选择删除行/列会删除单元格所在的行/列,还可以在单元格上侧/左侧添加行/列。
4.新增Open Table选项,如果不小心把表格关闭了可以点击重新打开。

注;所有版本保存的数据格式都是通用的,新版本也可以打开老版本保存的数据。建议大家使用最新的版本
**********************以下是旧版本介绍****************************
v1.1版本更新:
v1.1打包好的exe文件下载地址:
更新内容:
1.修复了绘制多条带有圆点的曲线时输出的cdxml文件中有些圆点会在曲线图层下面的问题。
2.当生成图像过大时,程序会自动拓展生成的cdxml文件的页面个数。
3.进一步优化了显示效果,目前程序模拟的输出效果和chemdraw绘制的结果几乎一致了,因此也增加了一些新功能。

新版本界面如下:
1.    增加了Curve Width 选项,用于调整曲线宽度 (默认0.6)
2.    增加了Font Size 选项,用于调整字体大小 (默认10.0)
3.    增加了Text Space 选项,用于调整文字和标志之间的距离(默认3.0)
4.    增加了Bond Width选项,用于调整线段的宽度 (默认2.0)
5.    增加了Label-Energy Layout 选项,设置能量数值和标签的位置关系,Sperate(分开显示),Combine(合并成一行显示)
6.    增加了Target location选项,用于设置文本和图形之间的位置关系:C (center) :中心位置,W S A D分别表示文本在图形的上/下/左/右
Sperate 和 Target location 组合在一起就可以有10种位置显示效果
7.    增加了Show Marker选项:勾选后会在屏幕中心显示一个苯环结构,大小和chemdraw中绘制的一致,用于判断曲线的大小是否合适。

关于位置设置:
如果想单独设置某个标签的位置,可以在单元格中添加逗号和位置信息,比如0.0(TS1),sw。第一个字母为s或者c,代表Label-Energy Layout中的Sperate或Combine,第二个字母为c/w/s/a/d中的一个,和Target location中的一致。程序会优先读取表格中的位置信息,如果没有则读取全局设置。表格保存的同时位置信息也会保存,可以避免多次修改。

比如:

剩下的在Chemdraw中微调就会很快了。
注:1. 新加的功能较多,有bug可以在评论区里反馈。
      2. 修改显示窗口的纵横比会导致显示的效果和导出的效果有差别,目前还没有解决,大家使用的时候最好不要调整窗口比例。(v1.2已解决)

v1.0版本:
最近比较流行绘制曲线样式的反应能量变化图,这样看上去会更有势能面的‘’感觉‘’,但又没有找到什么工具可以直接绘制,直接在Chemdraw中手搓又过于繁琐,干脆写了个小程序,用于绘制曲线能量变化图,生成的cdxml文件可以被Chemdraw读取,方便后续编辑。使用方法如下:
1.安装:
该程序使用python语言编写,需要额外安装的库有numpy和matplotlib,如果对python不熟悉的话可以直接在网盘下载打包好的exe版本:
2.使用:
双击进入程序,会显示两个界面,数据界面如下:
这个界面用于设置反应能量变化的信息。前三列分别用于设置曲线颜色,标志颜色和文本颜色,双击即可进入颜色选择界面,后面为能量信息,如果有标签的话写在括号里,比如0.0(R)。下面的按钮依次为:
1.    Add Row:添加行
2.    Add Column:添加列
3.    Delete Row:删除最后一行
4.    Delete Column:删除最后一列
5.    Save Data:把表格中的数据保存在当前目录下table_data.json中
6.    Load Data:读取当前目录下的table_data.json文件,用于快速恢复已经编辑好的数据。


在数据选择界面输入输入0.0(R),15.0(TS),0.0(P),在主界面显示如下:
下图为颜色切换界面,可以快速自定义需要的颜色:

主界面的左侧会显示绘制的图形,滚轮可以放大缩小,便于观察。底部也有一些调整按钮,右侧则是调整图像的选项,分别如下:
Scale Factor: 整体放大缩小
Scale Factor x: 沿x轴放大缩小
Scale Factor y: 沿y轴放大缩小
注:以上缩放只针对曲线大小,不会缩放标志和字体,且会影响输出的cdxml文件中的实际大小。
Base curve: 用于设置曲线的弧度,数值越大曲线弧度越大,为0则变成直线
Disp factor: 用于微调曲线,曲线x轴数值变化越大,弧度越大:

如下图所示,当两条曲线的x轴范围区别较大时单纯通过调整Base curve难以达到满意的效果:Base curve = 0.3时下面的曲线弧度已经合适,但是上面的曲线弧度太小。而当Base curve = 0.8时下面的曲线弧度又会过大,因此,可以通过调整Dispfactor使得两条曲线都具有合适的弧度。
Curve factor: 用于微调曲线,曲线y轴数值变化越大,弧度越大。原理和效果同上,只是根据y轴数值变化。
Bond length: 调整横线的长度
Circle Radius: 调整圆的半径

Shape:共有三个选择,分别为Line(横线),circle(圆)和None(没有标志),效果如下:
Connection:设置曲线和线段或圆的的连接方式:Center(中心连接),Side(边缘连接)
Line type:设置曲线的格式:Solid(实线),Dash(虚线)
Show all: 点击展示完整的曲线。
绘制完成后点击ExportCDXML即可生成output.cdxml文件
复杂的例子:(上:程序显示,下:Chemdraw输出结果)
注:1.程序中显示的图像通过matplotlib绘制而来,尽量还原在Chemdraw中的效果,但是没法百分百还原,还是应以输出结果为准。缩放图像请使用滚轮,拖动图像点击图表下方工具栏的十字按钮。
2.    生成的cdxml文件默认的格式为ACS document 1996,字体为Arial
3.    像上图中为了实现第二条曲线从IM1出发,会导致IM1处有两组数据,记得删除其中一组。(v1.2已解决)
4.    该程序未经过大量测试,可能会有bug,及时保存。
最后如果大家有什么问题和建议都可以在本帖下留言,我会在能力所及的范围内进行修改。如果大家觉得好用的话给我点个赞即可谢谢!


EnergyCurvePlot.py

54.07 KB, 下载次数 Times of downloads: 11

EnergyCurvePlot_v1.1.py

84.71 KB, 下载次数 Times of downloads: 3

EnergyCurvePlot_v1.2.py

104.64 KB, 下载次数 Times of downloads: 42

评分 Rate

参与人数
Participants 31
威望 +1 eV +138 收起 理由
Reason
ovovovo + 5 赞!
wow-lil + 4 赞!
imasen + 5 很丝滑
六等星 + 5 好物!
Huschein + 5 好物!
量化小王子 + 5 好物!
Beta + 4 好物!
量化新人 + 5 好物!
hhqywj + 5 好物!
玉米猫 + 5 GJ!
洛兰希尔 + 5 とてもいい!
cyx98 + 5 好物!
YH-W + 5 233333
yicheng526 + 4 好物!
埋头库库炫饭 + 5 牛!
huangxc82 + 5 谢谢分享
hdhxx123 + 5 GJ!
MercuryLamp + 5 赞!
nianbin + 5 好物!
ch_pzq1102 + 4 好物!

查看全部评分 View all ratings

有得必有失,有失必有得。

47

帖子

1

威望

1850

eV
积分
1917

Level 5 (御坂)

2#
 楼主 Author| 发表于 Post on 2024-12-2 21:40:20 | 只看该作者 Only view this author
之前设计这个程序的时候设想的功能都已经实现了。上个版本文本显示的位置一直搞不定,最近终于解决了,就把之前写好的功能也加了上来。
有得必有失,有失必有得。

181

帖子

0

威望

2199

eV
积分
2380

Level 5 (御坂)

3#
发表于 Post on 2024-12-31 21:20:41 | 只看该作者 Only view this author
真是个好东西呀

1

帖子

0

威望

348

eV
积分
349

Level 3 能力者

4#
发表于 Post on 2025-1-5 05:55:58 | 只看该作者 Only view this author
大佬,横线与横线之间的距离有没有办法调整哇

47

帖子

1

威望

1850

eV
积分
1917

Level 5 (御坂)

5#
 楼主 Author| 发表于 Post on 2025-1-5 21:16:16 | 只看该作者 Only view this author
Suviaor 发表于 2025-1-5 05:55
大佬,横线与横线之间的距离有没有办法调整哇

可以通过调整 Scale Factor x 调整横线之间距离
有得必有失,有失必有得。

404

帖子

0

威望

2311

eV
积分
2715

Level 5 (御坂)

6#
发表于 Post on 2025-1-16 21:47:57 | 只看该作者 Only view this author
调整颜色的按钮在哪里啊?

47

帖子

1

威望

1850

eV
积分
1917

Level 5 (御坂)

7#
 楼主 Author| 发表于 Post on 2025-1-17 14:32:14 | 只看该作者 Only view this author
mfdsrax2 发表于 2025-1-16 21:47
调整颜色的按钮在哪里啊?

直接双击表格区域前三列,会弹出颜色选择界面
有得必有失,有失必有得。

1

帖子

0

威望

63

eV
积分
64

Level 2 能力者

8#
发表于 Post on 2025-3-6 16:31:40 | 只看该作者 Only view this author
可以把数字去掉吗?线只能统一用实线或者虚线吗?

47

帖子

1

威望

1850

eV
积分
1917

Level 5 (御坂)

9#
 楼主 Author| 发表于 Post on 2025-3-7 15:49:46 | 只看该作者 Only view this author
芥子 发表于 2025-3-6 16:31
可以把数字去掉吗?线只能统一用实线或者虚线吗?

目前还没有这些功能,我先记下来,可以下个版本加上
有得必有失,有失必有得。

2

帖子

0

威望

47

eV
积分
49

Level 2 能力者

10#
发表于 Post on 2025-3-15 23:22:04 | 只看该作者 Only view this author
本帖最后由 yantang 于 2025-3-15 23:25 编辑

刚好需要!

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2025-8-15 23:36 , Processed in 0.182121 second(s), 25 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list