计算化学公社

标题: 差分电荷密度的2D图怎么能画成蓝白红呢 [打印本页]

作者
Author:
qwe1832518773    时间: 2021-1-16 21:54
标题: 差分电荷密度的2D图怎么能画成蓝白红呢
如何能画出下图这周蓝白红色彩的差分电荷密度图呢? (, 下载次数 Times of downloads: 81)

本来自己画2D的差分电荷密度图就是用VESTA的2D data display功能,但是VESTA默认的color scale只有没几种,不是蓝绿红就是黄蓝紫,或者索性就是灰度,引入大规模的绿色真的很丑。
(, 下载次数 Times of downloads: 63)
记得之前用过的Multiwfn里的color scale有整整18种,能用Multiwfn来画差分电荷密度2D图吗?



作者
Author:
rpestana94    时间: 2021-1-16 23:58
Sure you can use Multiwfn, here is a tutorial http://sobereva.com/113
作者
Author:
sobereva    时间: 2021-1-17 03:51
Multiwfn显然可以,下文2.3节末尾的那个密度差图就是Multiwfn直接画的

全面探究18碳环独特的分子间相互作用与pi-pi堆积特征
http://sobereva.com/572http://bbs.keinsci.com/thread-19660-1-1.html
作者
Author:
qwe1832518773    时间: 2021-1-17 10:30
rpestana94 发表于 2021-1-16 23:58
Sure you can use Multiwfn, here is a tutorial http://sobereva.com/113

感谢回复!
作者
Author:
qwe1832518773    时间: 2021-1-18 00:58
sobereva 发表于 2021-1-17 03:51
Multiwfn显然可以,下文2.3节末尾的那个密度差图就是Multiwfn直接画的

全面探究18碳环独特的分子间相互 ...

Sob老师,我看了http://sobereva.com/113里的例子,但是我一楼绿色的图使用VASP计算并用脚本处理了tot-a-b的电荷得到了一个diff.cube文件,这个文件放入VESTA或者VMD都可以得到3D的差分电荷密度等值面。但是放入Multiwfn里用主功能4-1得到的图并不是想要的差分电荷。我也试过将VASP计算完的tot、a、b都导出成cube文件,在Multiwfn里进行tot-a-b这样的操作,但也得不到正确的差分电荷密度。我该怎么做才能让Multiwfn识别出正确的cube文件等值面呢?
作者
Author:
qwe1832518773    时间: 2021-1-18 01:01
rpestana94 发表于 2021-1-16 23:58
Sure you can use Multiwfn, here is a tutorial http://sobereva.com/113

老师您好,我在一楼可能没有说清楚,我是用VASP计算完,然后处理了tot-a-b的电荷得到的差分电荷密度文件diff.cube,这个文件在VESTA和VMD里打开都是正常的等值面,但是Multiwfn里用5-1或者4-1直接打开这个cube文件都不能识别到正确的等值面。
对于这种情况,我该如何用Multiwfn来绘制VASP任务得到的差分电荷密度图像呢?
作者
Author:
卡开发发    时间: 2021-1-19 08:46
直接替换图的颜色。

  1. #作者:卡开发发
  2. #使用方法: python BGR2BWR.py $name.png
  3. import cv2
  4. import numpy as np
  5. import sys

  6. #通过opencv打开图像文件
  7. data=cv2.imread(sys.argv[1])
  8. #获取宽高,第三位为RGB
  9. h,w,_=data.shape
  10. #循环每个像素
  11. for i in range(h):
  12.     for j in range(w):
  13.         d=data[i][j]
  14.         #黑色边框和白色背景不进行任何处理
  15.         if ((d==np.array([0,0,0])).all()) \
  16.                 or ((d==np.array([255,255,255])).all()):
  17.             continue
  18.         #蓝色通道先255->0,之后绿色通道再0->255
  19.         #因此,要让颜色从蓝色渐变到白色,
  20.         #红色和绿色通道应当取(绿色通道值-蓝色通道值+255)//2
  21.         if d[0]>0:
  22.             data[i][j][2]=(255+d[1]-d[0])//2
  23.             data[i][j][1]=(255+d[1]-d[0])//2
  24.             data[i][j][0]=255
  25.             #更改完红色通道非0值,要跳过后续处理
  26.             continue
  27.         #类似蓝色通道的处理
  28.         if d[2]>=0:
  29.             data[i][j][0]=(255+d[1]-d[2])//2
  30.             data[i][j][1]=(255+d[1]-d[2])//2
  31.             data[i][j][2]=255
  32.             continue
  33. #显示
  34. cv2.imshow(sys.argv[1],data)
  35. #按任意键退出
  36. cv2.waitKey(0)
复制代码

作者
Author:
adong    时间: 2021-1-19 11:19
这个脚本很好用!需要安装 numpy;cv2 : pip install numpy; pip install opencv-python;
显示语句后面可以添加保存代码:
cv2.imwrite("./out_JPG.jpg", data, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
cv2.imwrite("./out_PNG.png", data, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
#按任意键退出
cv2.waitKey(0)
cv2.destroyAllWindows()

作者
Author:
卡开发发    时间: 2021-1-19 11:26
adong 发表于 2021-1-19 11:19
这个脚本很好用!需要安装 numpy;cv2 : pip install numpy; pip install opencv-python;
显示语句后面 ...

没有加入后续写入的原因是因为在show的那个显示过程可以直接右键另存为,这样的操作可能更简单。
作者
Author:
sobereva    时间: 2021-1-22 12:46
qwe1832518773 发表于 2021-1-18 01:01
老师您好,我在一楼可能没有说清楚,我是用VASP计算完,然后处理了tot-a-b的电荷得到的差分电荷密度文件d ...

本来cube文件就不给Multiwfn提供波函数信息,Multiwfn自然也就没法计算电子密度,看
详谈Multiwfn支持的输入文件类型、产生方法以及相互转换
http://sobereva.com/379http://bbs.keinsci.com/thread-6020-1-1.html

应当把Multiwfn的settings.ini里的iuserfunc设为-1(线性插值)或-3(B-spline插值),然后作图的函数选择100 User-defined function,这样被考虑的函数就是读入的cube文件里的数据插值的函数了

作者
Author:
qwe1832518773    时间: 2021-1-22 14:17
sobereva 发表于 2021-1-22 12:46
本来cube文件就不给Multiwfn提供波函数信息,Multiwfn自然也就没法计算电子密度,看
详谈Multiwfn支持的 ...

好的sob老师,我试试看
作者
Author:
fafa    时间: 2021-11-26 21:57
你好,我想问一下这个是差分电荷密度图的切面吗?我的差分电荷图切面总显示空白可能是什么原因呢




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