#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. Смотрите мою недавнюю правку для получения дополнительной информации об ошибке