Математический текст Matplotlib не отображается в легенде

#python #matplotlib #plot

#python #matplotlib #график

Вопрос:

У меня проблема с математическим текстом в легенде. Я мог бы поклясться, что раньше это работало, и это, безусловно, работает на другой машине. И математический текст, похоже, отлично работает в других сценариях построения графика на этом компьютере.

В принципе, у меня есть рисунок, состоящий из множества сложенных подзаголовков. Моя легенда номинально привязана к первой оси, но дескрипторы и метки не связаны с тем, что на самом деле находится на графиках.

Я создаю список дескрипторов и список меток.

Все дескрипторы являются matplotlib.lines.Line2D s. Все метки используют математический текст, например r'%.2f$,$s' % (arg) , или r'$mathbf{%.2f,s}$' % (arg) .

Вот соответствующий код:

 import matplotlib
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
matplotlib.rcParams['mathtext.fontset'] = 'stix'
matplotlib.rcParams['font.family'] = 'STIXGeneral'
matplotlib.rcParams['legend.fancybox'] = False
matplotlib.rcParams['axes.titlepad'] = 10

...

ax00.legend(handles=handles,
            labels=labels,
            loc='upper left',
            bbox_to_anchor=(1.015, 1.035),
            fontsize=20,
            ncol=4,
            columnspacing=-1.5)
  

Но тогда я получаю:

 ValueError: 
\mathbf{1.00\,s}
^
Unknown symbol: , found ''  (at char 0), (line:1, col:1)
  

Чего я не понимаю, так это почему это работало раньше и почему это работает в других скриптах. Есть ли проблема с метками условных обозначений, когда они не связаны с чем-либо, отображаемым на графике?

Я не касался своей среды, я использую ту же версию matplotlib на этом компьютере, что и на том, где работает этот скрипт.

РЕДАКТИРОВАТЬ дополнительную информацию об ошибке

Полный вывод ошибки ни на что не указывает в моем скрипте, но legend вызов — это то, что запускает его. Первая строка ошибки:

   File "C:Users<username>AppDataLocalContinuumanaconda3envspemdaslibsite-packagesmatplotlibmathtext.py", line 2598, in parse
    result = self._expression.parseString(s)
  

Затем куча материала из pyparsing.py, за которым следует:

 
  File "C:Users<username>AppDataLocalContinuumanaconda3envspemdaslibsite-packagesmatplotlibmathtext.py", line 2768, in unknown_symbol
    raise ParseFatalException(s, loc, "Unknown symbol: %s" % c)

ParseFatalException: Unknown symbol: 


During handling of the above exception, another exception occurred:

Traceback (most recent call last):

  File "C:Users<username>AppDataLocalContinuumanaconda3envspemdaslibsite-packagesIPythoncoreformatters.py", line 341, in __call__
    return printer(obj)
  

Затем куча материала matplotlib, наконец:

 
  File "C:Users<username>AppDataLocalContinuumanaconda3envspemdaslibsite-packagesmatplotlibmathtext.py", line 2603, in parse
    str(err)]))

ValueError: 
\mathbf{1.00\,s}
^
Unknown symbol: , found ''  (at char 0), (line:1, col:1)
  

Комментарии:

1. Не могли бы вы опубликовать строку ошибки здесь? Он отлично работает в matplotlib 3.3.0 с этим примером.

2. Строка ошибки — это ax00.legend . Но значение ошибки зависит от того, какая метка является первой в labels .

3. Смотрите мою недавнюю правку для получения дополнительной информации об ошибке