Creating energy profile diagrams for publication
PyEnergyDiagrams

I use my own script. I have posted it on GitHub now.
This is the final result:


It is quite easy to use, on the GitHub readme there is a small tutorial. You have to create an instance of ED class and then add the energy levels to it.

from energydiagram import ED
diagram = ED()
diagram.add_level(0,'Separated Reactants')
diagram.add_level(-5.4,'mlC1')
diagram.add_level(-15.6,'mlC2','last',)
diagram.add_level(28.5,'mTS1',color='g')
diagram.add_level(-9.7,'mCARB1')
diagram.add_level(-19.8,'mCARB2','last')
diagram.add_level(20,'mCARBX','last')


To add the links between the levels you can have a look to the IDs of the level using this the argument of the function plot show_IDs=True:

diagram.plot(show_IDs=True)




And then you can use:

 diagram.add_link(left_ID_levetobelinked,right_ID_levetobelinked)


Export to pgf,pdf and svg

You can export it just saving the plot from the GUI button or programmatically in different formats for publications using matplotlib backend.
 I prefer to export the plot in .pgf   and then I import it in the LaTeX document this allow a full control over fonts and appearance of the figure.



For reaching better quality you have to change a little bit the autogenerated .pgf file.

The first thing you have to do is to find and replace − with -.

Later you can follow the procedure in this answer so that the font of the figure matches with the font size and type of the document.