gpt4 book ai didi

python - Matplotlib 上的 Latex 未被识别为字符串

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:53 25 4
gpt4 key购买 nike

全部

我正在尝试在 Matplotlib 上绘制一些数据并在标题上使用 Latex。我以前做过这些,从未遇到过这个问题。我使用以下代码来绘制:

plt.subplot(1,2,1)
plt.hist(t_single, bins, rwidth= 0.8, normed= True)
plt.plot(supp, gaussian, 'red')
plt.title(r'Single-selection Estimator ($c_y = $' + str(cy) + ', $c_d = $' + str (cd) + ', $\alpha_0 = $' + str(alpha_0) + ')', fontsize = 16)
plt.legend(['Gaussian', 'Estimator'], loc = 'best', fontsize = 14)
plt.ylabel('Frequency', fontsize = 14)
plt.xlabel('t-statistic', fontsize = 14)

但是,我收到以下错误:

ParseException                            Traceback (most recent call last)
~/anaconda3/lib/python3.6/site-packages/matplotlib/mathtext.py in parse(self, s, fonts_object, fontsize, dpi)
2515 try:
-> 2516 result = self._expression.parseString(s)
2517 except ParseBaseException as err:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in parseString(self, instring, parseAll)
1631 # catch and re-raise exception from here, clears out pyparsing internal stack trace
-> 1632 raise exc
1633 else:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in parseString(self, instring, parseAll)
1621 try:
-> 1622 loc, tokens = self._parse( instring, 0 )
1623 if parseAll:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in _parseCache(self, instring, loc, doActions, callPreParse)
1528 try:
-> 1529 value = self._parseNoCache(instring, loc, doActions, callPreParse)
1530 except ParseBaseException as pe:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
1378 try:
-> 1379 loc,tokens = self.parseImpl( instring, preloc, doActions )
1380 except IndexError:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
3716 if self.expr is not None:
-> 3717 return self.expr._parse( instring, loc, doActions, callPreParse=False )
3718 else:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in _parseCache(self, instring, loc, doActions, callPreParse)
1528 try:
-> 1529 value = self._parseNoCache(instring, loc, doActions, callPreParse)
1530 except ParseBaseException as pe:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
1378 try:
-> 1379 loc,tokens = self.parseImpl( instring, preloc, doActions )
1380 except IndexError:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
3394 else:
-> 3395 loc, exprtokens = e._parse( instring, loc, doActions )
3396 if exprtokens or exprtokens.haskeys():

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in _parseCache(self, instring, loc, doActions, callPreParse)
1528 try:
-> 1529 value = self._parseNoCache(instring, loc, doActions, callPreParse)
1530 except ParseBaseException as pe:

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in _parseNoCache(self, instring, loc, doActions, callPreParse)
1382 else:
-> 1383 loc,tokens = self.parseImpl( instring, preloc, doActions )
1384

~/anaconda3/lib/python3.6/site-packages/pyparsing.py in parseImpl(self, instring, loc, doActions)
3182 if loc < len(instring):
-> 3183 raise ParseException(instring, loc, self.errmsg, self)
3184 elif loc == len(instring):

ParseException: Expected end of text (at char 50), (line:1, col:51)

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last)
~/Google Drive/Mestrado/Tese/Code/Belloni_simulations/sim_plotter.py in <module>()
59 folder = 'alpha_' + str(alpha_0) + '/'
60 figname = 'single_vs_double_cy_' + str(cy) + '_cd_' + str(cd) + '_alpha' + str(alpha_0) + '.png'
---> 61 plt.savefig(folder + figname, bbox_inches = 'tight', dpi = 300)
62
63

~/anaconda3/lib/python3.6/site-packages/matplotlib/pyplot.py in savefig(*args, **kwargs)
699 def savefig(*args, **kwargs):
700 fig = gcf()
--> 701 res = fig.savefig(*args, **kwargs)
702 fig.canvas.draw_idle() # need this if 'transparent=True' to reset colors
703 return res

~/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py in savefig(self, fname, **kwargs)
1832 self.set_frameon(frameon)
1833
-> 1834 self.canvas.print_figure(fname, **kwargs)
1835
1836 if frameon:

~/anaconda3/lib/python3.6/site-packages/matplotlib/backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
2214 orientation=orientation,
2215 dryrun=True,
-> 2216 **kwargs)
2217 renderer = self.figure._cachedRenderer
2218 bbox_inches = self.figure.get_tightbbox(renderer)

~/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in print_png(self, filename_or_obj, *args, **kwargs)
505
506 def print_png(self, filename_or_obj, *args, **kwargs):
--> 507 FigureCanvasAgg.draw(self)
508 renderer = self.get_renderer()
509 original_dpi = renderer.dpi

~/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in draw(self)
428 # if toolbar:
429 # toolbar.set_cursor(cursors.WAIT)
--> 430 self.figure.draw(self.renderer)
431 finally:
432 # if toolbar:

~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
53 renderer.start_filter()
54
---> 55 return draw(artist, renderer, *args, **kwargs)
56 finally:
57 if artist.get_agg_filter() is not None:

~/anaconda3/lib/python3.6/site-packages/matplotlib/figure.py in draw(self, renderer)
1297
1298 mimage._draw_list_compositing_images(
-> 1299 renderer, self, artists, self.suppressComposite)
1300
1301 renderer.close_group('figure')

~/anaconda3/lib/python3.6/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
136 if not_composite or not has_images:
137 for a in artists:
--> 138 a.draw(renderer)
139 else:
140 # Composite any adjacent images together

~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
53 renderer.start_filter()
54
---> 55 return draw(artist, renderer, *args, **kwargs)
56 finally:
57 if artist.get_agg_filter() is not None:

~/anaconda3/lib/python3.6/site-packages/matplotlib/axes/_base.py in draw(self, renderer, inframe)
2435 renderer.stop_rasterizing()
2436
-> 2437 mimage._draw_list_compositing_images(renderer, self, artists)
2438
2439 renderer.close_group('axes')

~/anaconda3/lib/python3.6/site-packages/matplotlib/image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
136 if not_composite or not has_images:
137 for a in artists:
--> 138 a.draw(renderer)
139 else:
140 # Composite any adjacent images together

~/anaconda3/lib/python3.6/site-packages/matplotlib/artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
53 renderer.start_filter()
54
---> 55 return draw(artist, renderer, *args, **kwargs)
56 finally:
57 if artist.get_agg_filter() is not None:

~/anaconda3/lib/python3.6/site-packages/matplotlib/text.py in draw(self, renderer)
713
714 with _wrap_text(self) as textobj:
--> 715 bbox, info, descent = textobj._get_layout(renderer)
716 trans = textobj.get_transform()
717

~/anaconda3/lib/python3.6/site-packages/matplotlib/text.py in _get_layout(self, renderer)
315 w, h, d = renderer.get_text_width_height_descent(clean_line,
316 self._fontproperties,
--> 317 ismath=ismath)
318 else:
319 w, h, d = 0, 0, 0

~/anaconda3/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py in get_text_width_height_descent(self, s, prop, ismath)
229 if ismath:
230 ox, oy, width, height, descent, fonts, used_characters = \
--> 231 self.mathtext_parser.parse(s, self.dpi, prop)
232 return width, height, descent
233

~/anaconda3/lib/python3.6/site-packages/matplotlib/mathtext.py in parse(self, s, dpi, prop)
3301 self.__class__._parser = Parser()
3302
-> 3303 box = self._parser.parse(s, font_output, fontsize, dpi)
3304 font_output.set_canvas_size(box.width, box.height, box.depth)
3305 result = font_output.get_results(box)

~/anaconda3/lib/python3.6/site-packages/matplotlib/mathtext.py in parse(self, s, fonts_object, fontsize, dpi)
2520 err.line,
2521 " " * (err.column - 1) + "^",
-> 2522 six.text_type(err)]))
2523 self._state_stack = None
2524 self._em_width_cache = {}

ValueError:
Single-selection Estimator ($c_y = $1, $c_d = $1, $lpha_0 = $0.5)
^
Expected end of text (at char 50), (line:1, col:51)

我正在使用 Visual Studio Code,实际上,\alpha_0''' 上的 \a''' 部分以不同的方式突出显示,因为它将其识别为另一个命令,而不是作为将被解释为 Latex 命令的字符串的一部分。



有解决办法吗? Latex 会让我的标题变得非常整洁!



提前非常感谢!






最佳答案





当您在 matplotlib 中连接包含 Latex 的字符串时,仅仅将 'r' 放在第一个字符串的开头是不够的,它需要位于每个被连接的字符串之前(那些包含 Latex 的字符串)例如,命令 - '$c_d = $' 不应要求此)。改变



plt.title(r'Single-selection Estimator ($c_y = $' + str(cy) + ', $c_d = $' + 
str (cd) + ', $\alpha_0 = $' + str(alpha_0) + ')', fontsize = 16)

plt.title(r'Single-selection Estimator ($c_y = $' + str(cy) + ', $c_d = $' + 
str (cd) + r', $\alpha_0 = $' + str(alpha_0) + ')', fontsize = 16)

问题应该得到解决。这是因为只有第一个字符串被解释为原始字符串,您连接的所有后续字符串都不会被解释为原始字符串。

关于python - Matplotlib 上的 Latex 未被识别为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54466488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com