我目前处于学习matplotlib.pyplot
的状态,并且很高兴拥有LaTeX
集成以尽可能完美地工作。
这是我目前拥有的:
import numpy as np
import matplotlib.pyplot as plt
# Latex implementation
plt.rc('text', usetex=True)
plt.rc('text.latex', preamble=r'\usepackage{chemfig},\usepackage{siunitx}')
# import data from file
with open ('vanillin.dat') as dat:
lines = dat.readlines()
wavenumbers = [float(line.split()[0]) for line in lines]
absorption = [float(line.split()[1]) for line in lines]
# axis labels and plot title
plt.title("IR Spectrum of Vanillin", fontsize=22)
plt.xlabel('Wavenumber in cm$^{-1}$', fontsize=16)
plt.ylabel('Absorption in \%', fontsize=16)
# axis limits (Wavenumber on x coordinate has to be reversed)
plt.ylim(0,100)
plt.xlim(4000,600)
# grid and plot drawing
plt.grid(color='gray', linestyle=':')
plt.plot(wavenumbers, absorption, c='black', linewidth=0.5)
# save plot
plt.savefig('output.png')
上面的代码产生以下频谱:
现在,如果我要添加文本(包括来自包含的LaTeX
程序包(即siunitx
)中的宏,则此方法非常有效。这是添加的行(添加到plt.ylabel()
下方,并在生成的图下方:
plt.text(3700, 80, r'Peak at \SI{1600}{\per\centi\meter} $\rightarrow$ carbonyl', fontsize=12)
现在,我想包括香草醛的结构,该结构是由下面的chemfig
代码生成的:
\chemfig{*6((-HO)=(-O-[:-30])-=(-=[2]O)-=-)}
它是这样的:
如果我现在将代码包含在绘图中,则无法正确显示它:
plt.text(3300, 80, r'\chemfig{*6((-HO)=(-O-[:-30])-=(-=[2]O)-=-)}')
有人知道如何解决此问题吗?
非常感谢!