Energy band diagrams are used to visulize the electron and hole transport in Solar cells and LED research. I want to quickly draw them and came up with a python module.
Here's an example on how to use this code.
from Band_diagram import metal, semiconductor, plot
# Define the metals and semiconductors. Here wf is the work function of metals,
# cb is conduction band minimum and vb is valance band maximum wrt to vacuum level
ITO = metal(wf = -5.2, name= 'ITO')
p_nio = semiconductor(cb = -1.85, vb = -5.49, name = 'P-NIO')
p3HT = semiconductor(cb = -3, vb = -5.0, name = 'P3HT')
PCBM = semiconductor(cb = -4, vb = -6.5, name = 'PCBM')
ZnO = semiconductor(cb = -4.2, vb = -7.5, name = 'ZnO')
LiF_Al = metal(wf=-3.7, name = 'LiF/Al')
## Create the stack
stack = [ITO,p_nio,p3HT,PCBM,ZnO,LiF_Al]
## plot the stack and save it
plot(stack, filepath = 'Images/Stack1.png')
will result in the following plot

You can download it at my github repository.