首页 > 解决方案 > Matplotlib:在标题和标签中迭代生成 TeX 符号

问题描述

我有一个程序可以生成一堆图,我希望它们的标题/标签是 TeX 格式的符号。我知道如何为 matplotlib 中的单个图执行此操作,例如

import matplotlib.pyplot as plt 
import numpy as np

x = np.linspace(0,2,30)
y = np.exp(x)

plt.figure()
plt.title('Plot of ' + r'$\alpha(t)$')
plt.plot(x,y, label = r'$\alpha(t)$')
plt.legend()

产生

在此处输入图像描述

到现在为止还挺好。但现在我坚持的是如何在给定 TeX 表达式列表的情况下迭代地执行此操作。例如,我试过:

vars_list = ['alpha','beta','gamma','delta','epsilon']

for var in vars_list:
   plt.figure()
   plt.title('Plot of ' + r'$var$')
   plt.plot(x,y, label = r'$var$')
   plt.legend()

但不是生成 TeX 符号,它只是为标题和标签写 'var'。似乎var是按字面意思解释的,而不是它所指的字符串。有没有办法使这项工作?

(我这样做的动机是生成的绘图数量和使用的符号取决于用户输入,因此单独制作每个绘图的临时方法将不起作用。)

标签: pythonmatplotlibplotlatex

解决方案


那是因为您传递的是字符串'var'而不是变量var。你的意思是:

vars_list = ['\\alpha','\\beta','C','D']
for var in vars_list:
   plt.figure()
   plt.title('Plot of ' + rf'${var}$')
   plt.plot(x,y, label = rf'${var}$')
   plt.legend()

输出:

在此处输入图像描述


推荐阅读