用VASP计算好能带和态密度后,往往需要拖到windows中利用p4vasp来画图,或者用其导出能带和态密度图,这样做实在太麻烦了。这里介绍用Pymatgen程序生成能带和态密度的矩阵,直接放到origin中。只需要一个python程序,一个KPOINTS,一个vasprun.xml。
目录
1. 生成能带数据
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('Agg')
from pymatgen.io.vasp.outputs import Vasprun
from pymatgen.electronic_structure.plotter import BSDOSPlotter,\
BSPlotter,BSPlotterProjected,DosPlotter
import numpy as np
# read vasprun.xml,get band and dos information
bs_vasprun = Vasprun("vasprun.xml",parse_projected_eigen=True)
bs_data = bs_vasprun.get_band_structure(line_mode=True)
a = BSPlotter(bs_data)
# export the band data
band_energy = np.array(a.bs_plot_data()['energy'][0]['1']).flatten()
times = len(band_energy) / len(np.array(a.bs_plot_data()['dist