【发布时间】:2015-11-30 20:47:06
【问题描述】:
我有一个情节,我在 matplotlib 中使用各种 unicode 字符作为标记符号。例如:
plot(x, y, marker=ur"$\u25B2$", markeredgecolor='#262626', linewidth=1)
上面的命令是针对 python 2.7 的,我给它传递了一个 unicode 字符来表示一个向上的三角形。这在带有 matplotlib 1.4.x 的 python 2.7 中运行良好。最近我一直在尝试迁移到 python 3.5,并将上面的行更改为:
plot(x, y, marker=r"$\u25B2$", markeredgecolor='#262626', linewidth=1)
不幸的是,这在 python 3.5 和 matplotlib 1.5.0 中不起作用。我看不出我做错了什么。它给了我一种我无法理解的奇怪类型的错误(见下文)。我没有正确表示 unicode 字符,还是 matplotlib 本身有其他问题?
Traceback (most recent call last):
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/mathtext.py", line 2368, in parse
result = self._expression.parseString(s)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1125, in parseString
raise exc
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1115, in parseString
loc, tokens = self._parse( instring, 0 )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2624, in parseImpl
return self.expr._parse( instring, loc, doActions, callPreParse=False )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2378, in parseImpl
loc, exprtokens = e._parse( instring, loc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2732, in parseImpl
loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2361, in parseImpl
loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1015, in _parseNoCache
tokens = fn( instring, tokensStart, retTokens )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 779, in wrapper
ret = func(*args[limit[0]:])
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/mathtext.py", line 2439, in math_string
return self._math_expression.parseString(toks[0][1:-1])
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1125, in parseString
raise exc
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1115, in parseString
loc, tokens = self._parse( instring, 0 )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2624, in parseImpl
return self.expr._parse( instring, loc, doActions, callPreParse=False )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2766, in parseImpl
loc, tokens = self.expr._parse( instring, loc, doActions, callPreParse=False )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2624, in parseImpl
return self.expr._parse( instring, loc, doActions, callPreParse=False )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 989, in _parseNoCache
loc,tokens = self.parseImpl( instring, preloc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 2483, in parseImpl
ret = e._parse( instring, loc, doActions )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1046, in _parseCache
value = self._parseNoCache( instring, loc, doActions, callPreParse )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 1015, in _parseNoCache
tokens = fn( instring, tokensStart, retTokens )
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/pyparsing.py", line 779, in wrapper
ret = func(*args[limit[0]:])
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/mathtext.py", line 2525, in unknown_symbol
raise ParseFatalException(s, loc, "Unknown symbol: %s" % c)
pyparsing.ParseFatalException: Unknown symbol: \u (at char 0), (line:1, col:1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "RTMEditor.py", line 783, in <module>
main()
File "RTMEditor.py", line 776, in main
mw = RTMEditor(args.fname[0], dwx=args.s[0], dwy=args.s[0])
File "RTMEditor.py", line 273, in __init__
self.render_view()
File "RTMEditor.py", line 520, in render_view
markeredgecolor='#262626', zorder=3, linewidth=1)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/__init__.py", line 1811, in inner
return func(ax, *args, **kwargs)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/axes/_axes.py", line 1427, in plot
for line in self._get_lines(*args, **kwargs):
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 386, in _grab_next_args
for seg in self._plot_args(remaining, kwargs):
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 374, in _plot_args
seg = func(x[:, j % ncx], y[:, j % ncy], kw, kwargs)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 281, in _makeline
self.set_lineprops(seg, **kwargs)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/axes/_base.py", line 189, in set_lineprops
line.set(**kwargs)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/artist.py", line 937, in set
ret.extend([func(v)])
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/lines.py", line 1072, in set_marker
self._marker.set_marker(marker)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/markers.py", line 255, in set_marker
self._recache()
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/markers.py", line 193, in _recache
self._marker_function()
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/markers.py", line 331, in _set_mathtext_path
usetex=rcParams['text.usetex'])
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/textpath.py", line 445, in __init__
usetex=usetex)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/textpath.py", line 529, in text_get_vertices_codes
ismath=ismath)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/textpath.py", line 148, in get_text_path
prop, s)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/textpath.py", line 240, in get_glyphs_mathtext
s, self.DPI, prop)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/mathtext.py", line 3118, in parse
box = self._parser.parse(s, font_output, fontsize, dpi)
File "/Users/dchandan/local/anaconda/lib/python3.5/site-packages/matplotlib/mathtext.py", line 2374, in parse
six.text_type(err)]))
ValueError:
\u25B2
^
Unknown symbol: \u (at char 0), (line:1, col:1)
Process finished with exit code 1
【问题讨论】:
标签: python python-2.7 python-3.x matplotlib unicode