Python 基于matplotlib的势能面最小路径
我使用Matplotlib绘制了一个三维势能面。 但是,我还想用箭头显示一个反应路径,在势能面的极小值之间有一个势垒最低的 有人能帮我吗:这是我的3D曲面代码:Python 基于matplotlib的势能面最小路径,python,matplotlib,path,Python,Matplotlib,Path,我使用Matplotlib绘制了一个三维势能面。 但是,我还想用箭头显示一个反应路径,在势能面的极小值之间有一个势垒最低的 有人能帮我吗:这是我的3D曲面代码: #!/usr/bin/python INPUT='input.txt' from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np from matplotlib.mlab import griddata from
#!/usr/bin/python
INPUT='input.txt'
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.mlab import griddata
from matplotlib import cm
from pylab import *
from matplotlib.ticker import LinearLocator, FormatStrFormatter
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
data = np.genfromtxt(INPUT)
x = data[:,0]
y = data[:,1]
z = data[:,2]
xi = np.linspace(min(x), max(x))
yi = np.linspace(min(y), max(y))
X, Y = np.meshgrid(xi, yi)
Z = griddata(x, y, z, xi, yi, interp='linear')
ax.contourf(X, Y, Z, 30, zdir='z', offset=-7, linewidth=0.2, cmap=cm.jet, antialiased=False, shade=True)
C = ax.contour(X, Y, Z, 30, colors='k', linewidths=0.2)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, linewidth=0, antialiased=False, shade=False)
fig.colorbar(surf)
ax.clabel(C, inline=1, fontsize=10)
ax.set_xlabel(r"$d$$_{3}$ ($\AA$)")
ax.set_ylabel(r"$d$$_{4}$ ($\AA$)")
ax.set_zlabel(r"$\Delta$$E$$_{e}$ (kcal/mol)")
plt.show()
我想要一个如下所示的图表:
资料来源: