【发布时间】:2023-03-07 18:01:01
【问题描述】:
我想生成如下链接的图表
http://en.wikipedia.org/wiki/Reaction_coordinate
通过计算安装的 python 库生成的图表。 我希望使用 cspline gnuplot 类型的线条平滑
值 E_ads=234.4211 、 E_dis=0.730278 和 E_reac=-0.8714
谁能帮帮我
from ase import *
from ase.calculators.jacapo import *
import Gnuplot as gp
# -- Read in all energies
datadict = {'H2O' :'water.nc',
'Pt' :'out-Pt.nc',
'H2OPt' :'H2O.Pt.nc',
'OHPt' :'OHPt.nc',
'HPt' :'HPt.nc',
}
E = {}
for label, file in datadict.items():
print 'Reading energy for %5s from file %20s' % (label, file),
atoms = Jacapo.read_atoms(file)
E[label] = atoms.get_potential_energy()
print '\tE = %14.6f eV'% E[label]
print
# -- Calculate adsorption and disassociation energies
E_ads = (E['H2OPt'] - 2*E['H2O'] - E['Pt'])/2
print 'H2O adsorption energy on Pt:'
print 'E_ads =', E_ads, 'eV\n'
E_dis = E['HPt'] - E['Pt'] + E['OHPt'] - E['Pt'] - E['H2O']
print 'H2O -> OH + H disassociation energy on Pt:'
print 'E_dis =', E_dis, 'eV\n'
E_reac = E['H2OPt'] - E['HPt'] - E['OHPt'] + E['Pt']
print 'H2O@Pt -> OH@Pt +H@Pt reaction energy on Pt:'
print 'E_reac =', E_reac, 'eV\n'
# -- Collect reaction path
Epath = np.asarray([1.0, E_ads, E_dis, E_reac])
PathLabels= ['']
# -- Plot the reaction path
import pylab as p
import numpy as np
import matplotlib.path as mpath
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
from scipy.interpolate import spline
import matplotlib.pyplot as plt
from numpy import array, linspace
from scipy.interpolate import spline
fig = p.figure(1)
sp = p.subplot(1,1,1)
p.plot(Epath, color='black', linestyle=':', linewidth=2.0, alpha=0.8)
p.text(0.37, 10.05, 'Free H$_2$O',fontsize=12, color='black',ha='right', va='bottom', alpha=1.0)
p.text(1.1, 238, 'H$_2$O + Pt',fontsize=12, color='black',ha='right', va='bottom', alpha=1.0)
p.title('H$_2$O disassociation')
p.ylabel('Energy [eV]')
p.xlabel('Reaction path')
#p.xlim([-0.5, 2.5])
#p.ylim([-0.5, 1.5])
sp.get_xaxis().set_ticks([]) # Turn off ticks on xaxis
#p.savefig('Teste.png')
p.show()
【问题讨论】:
-
Gnuplot 适合这个问题,还是不适合?
-
遗憾的是我想用 matplotlib 使用样条线生成折线图。如果没有正确指定,我很抱歉
标签: python linux numpy matplotlib