Python Внутренний латексный рендеринг matplotlib имеет неравномерный интервал надписей легенды? - PullRequest
0 голосов
/ 28 января 2020

Использование символа латекса для стрелки вправо (\rightarrow) для надписей легенды с внутренним рендерингом латекса в matplotlib регулирует межстрочный интервал между записями надписей; см. минимальный пример ниже, он создает две прикрепленные цифры png. Есть ли способ сохранить равномерное расстояние между метками при использовании латексного символа (кажется, что параметр labelspacing для plt.legend() не работает для этого)? Я понимаю, что межстрочный интервал должен быть шире для высоких символов или дробей или около того, но стрелка на самом деле меньше текстовых символов.

Технические характеристики: python 3.7.6, matplotlib 3.1.2

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.arange(10)

def plot_example(plot_case):
    plt.plot(x, y, label=r'test case a1')
    plt.plot(x, y, label=r'test case b1')
    if plot_case == 'good':
        plt.plot(x, y, label=r'test case c1')
        plt.plot(x, y, label=r'test case d1')
        plt.plot(x, y, label=r'test case e1')
    elif plot_case == 'bad':
        plt.plot(x, y, label=r'test case c1 $\rightarrow$ c2')
        plt.plot(x, y, label=r'test case d1 $\rightarrow$ d2')
        plt.plot(x, y, label=r'test case e1 $\rightarrow$ e2')
    handles, labels = plt.gca().get_legend_handles_labels()
    plt.legend(handles, labels, fontsize=7)
    plt.savefig('~/test_legend_labelspacing_latex_arrow_%s.png' % plot_case)
    plt.close()

plot_example('good')
plot_example('bad')

good case bad case

...