计算化学公社

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

[综合讨论] 求助,请问大家如何修改代码,可以使这个DOS图更清晰?

[复制链接 Copy URL]

268

帖子

0

威望

2288

eV
积分
2556

Level 5 (御坂)

大家好,我在使用基于Quantum Espresso开发的eQE程序跑动力学。基于产生的输出文件,提取每一步产生(大约1700步,一步为1 fs)的轨道能量画出DOS图,如下所示,

我感觉画出来的图不能清晰的展示DOS图的峰值,请问大家有什么修改建议吗(附上代码和数据文件)?
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from matplotlib import cm

  4. # 初始化一个列表,用于存储所有帧的数据
  5. all_data = []

  6. # 读取 frame_1_energy.txt 中的数据
  7. filename = "frame_0_energy.txt"
  8. with open(filename, 'r') as file:
  9.     lines = file.readlines()
  10.     # 提取整个文件的数据并将其转换为浮点数列表
  11.     data = [float(value) for line in lines for value in line.split()]
  12.     all_data.append(data)

  13. # 读取其他文件的数据并添加到列表中
  14. for i in range(1, 1722):  # 读取 frame_2_energy.txt 到 frame_10_energy.txt 的数据
  15.     filename = f"frame_{i}_energy.txt"
  16.     with open(filename, 'r') as file:
  17.         lines = file.readlines()
  18.         # 提取整个文件的数据并将其转换为浮点数列表
  19.         data = [float(value) for line in lines for value in line.split()]
  20.         all_data.append(data)

  21. # 绘制水平直方图
  22. plt.figure(figsize=(10, 6))

  23. # Viridis colormap
  24. colors = cm.viridis(np.linspace(0, 1, len(all_data)))

  25. # 绘制水平直方图并计算并绘制高斯拟合曲线
  26. for i, (data, color) in enumerate(zip(all_data, colors)):
  27.     mu, std = np.mean(data), np.std(data)
  28.     num_bins = 400  # 将直方图分成50个柱子
  29.     n, bins, patches = plt.hist(data, bins=num_bins, density=True, alpha=0.3, label=f'Frame {i+1}', orientation='horizontal', color=color)

  30.     # 计算并绘制高斯拟合曲线
  31.     xmin, xmax = min(data), max(data)
  32.     x = np.linspace(xmin, xmax, 2000)
  33.     p = (1/(std * np.sqrt(2 * np.pi))) * np.exp(-(x - mu)**2 / (2 * std**2))
  34.     # plt.plot(p, x, 'k', linewidth=2)

  35. plt.ylim(-5.5, 5.5)
  36. plt.xlabel('Density of states', fontsize=14)  # 设置x轴标签的字体大小
  37. plt.ylabel('Orbital Energy, eV', fontsize=14)  # 设置y轴标签的字体大小
  38. plt.title('Probability Density of Orbital Energy', fontsize=16)
  39. plt.xticks(fontsize=14)  # 设置x轴刻度的字体大小
  40. plt.yticks(fontsize=14)  # 设置y轴刻度的字体大小
  41. plt.grid(True)

  42. plt.savefig('DOS_plot.png', dpi=600)
  43. plt.show()
复制代码


数据文件.zip

707.76 KB, 下载次数 Times of downloads: 1

本版积分规则 Credits rule

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

GMT+8, 2024-11-25 10:05 , Processed in 0.189901 second(s), 24 queries , Gzip On.

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