我无法让\phantom
和\quad
LaTeX命令在matplotlib
的图例标签中工作。
理想情况下,我想购买PREV。 <15%”以与下面的标签对齐,以使“ PREV”。排队。我可以使用\phantom
或\quad
命令在LaTeX文档中执行此操作。但是,以下代码产生了上面显示的图像,我无法弄清楚为什么这些命令没有任何作用。
import matplotlib
matplotlib.rcParams['hatch.color'] = '#787878'
import matplotlib.pyplot as plt
from matplotlib.patches import Patch
CB = {'OrRd': ['#fef0d9', '#fdcc8a', '#fc8d59', '#e34a33', '#b30000']}
# Plot legend
legend_labels = [r'$\phantom{LONG TEST PHRASE} \textsc{Prev.} < %i\%%$' % (15),
r'$%i\%% \leq \textsc{Prev.} < %i\%%$' % (15, 25),
r'$%i\%% \leq \textsc{Prev.} < %i\%%$' % (25, 35),
r'$%i\%% \leq \textsc{Prev.} < %i\%%$' % (35, 45),
r'$%i\%% \leq \textsc{Prev.}$' % (45)]
legend_elements = [Patch(facecolor='#86838C', label='$\\textsc{N} < 20$',)] \
+ [Patch(facecolor='#ffffff', hatch='//', label='$20 \\leq \\textsc{N} \\leq 50$')] \
+ [Patch(facecolor=color, label=label) for color, label in zip(CB['OrRd'], legend_labels)]
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
leg = plt.legend(handles=legend_elements, loc=2, fontsize=21,
frameon=False,
title=r'\textsc{LEGEND}', title_fontsize=24)
plt.show()
答案 0 :(得分:1)
以下解决方案并不完美,但我仍然值得与您分享。尽管链接问题稍有不同,我还是从this的相似问题改编而成。如您所见,对齐方式并不完美。您可能需要稍微调整一下。我不得不从title_fontsize
中删除plt.legend()
,因为它似乎与matplotlib 2.2.2
不兼容。
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.preview'] = True
# Plot legend
legend_labels = [r'$\quad \quad \quad \textsc{Prev.} < %i\%%$' % (15),
r'$%i\%% \leq \textsc{Prev.} < %i\%%$' % (15, 25),
r'$%i\%% \leq \textsc{Prev.} < %i\%%$' % (25, 35),
r'$%i\%% \leq \textsc{Prev.} < %i\%%$' % (35, 45),
r'$%i\%% \leq \textsc{Prev.}$' % (45)]