Я сейчас нахожусь в состоянии обучения 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)-=-)}')

У кого-нибудь есть идеи, как решить эту проблему?
Большое спасибо!