Skip to content

ChemDraw设置颜色

背景

在计算pi键级之后,需要将其映射为chendraw的键的颜色,一根键一根键地改太麻烦了,因此再pywfn中添加了直接设置键颜色的功能

代码

py
from pywfn.tools import xml

# 数值到颜色的映射,数值要处于最大值和最小值之间
def color_map(val,vmin,vmax):
    ratio=(val-vmin)/(vmax-vmin)
    c0=[1.0,1.0,1.0] # 白色
    c1=[0.0,0.0,1.0] # 蓝色
    R=c0[0]+(c1[0]-c0[0])*ratio
    G=c0[1]+(c1[1]-c0[1])*ratio
    B=c0[2]+(c1[2]-c0[2])*ratio
    return (R,G,B)


path=rf"c:\Users\11032\Desktop\test.cdxml"
tool=xml.Tool(path)
# 1.显示图像
tool.show()
# 2.设置颜色
# 设置数据,原子1、原子2、数值(键级)
data=[
    [3,5,1.0],
    [5,7,2.0],
    [7,9,3.0],
    [9,11,4.0],
    [11,13,5.0],
    [13,3,6.0],
]
for a1,a2,val in data:
    color=color_map(val,0.0,6.0)
    tool.set_color((a1,a2),color)
tool.save("new.cdxml")

结果

如图所示(a)是再chemdraw直接绘制的苯环,全是黑色的。(b)是使用matplotlib绘制的键的节点编号,在代码中可以通过指定键两侧的节点设置键的颜色。(c)是设置颜色之后的chemdraw图像