我正在尝试使用matplotlib绘制乳胶。 我已经用pip安装了乳胶。 这个example很好用
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t,s)
plt.title(r'$\alpha_i > \beta_i$', fontsize=20)
plt.text(1, -0.6, r'$\sum_{i=0}^\infty x_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',
fontsize=20)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.show()
matplotlib.rcParams['text.usetex'] = True
遇到乳胶错误。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['text.usetex'] = True
t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
plt.plot(t,s)
plt.title(r'$\alpha_i > \beta_i$', fontsize=20)
plt.text(1, -0.6, r'$\sum_{i=0}^\infty x_i$', fontsize=20)
plt.text(0.6, 0.6, r'$\mathcal{A}\mathrm{sin}(2 \omega t)$',
fontsize=20)
plt.xlabel('time (s)')
plt.ylabel('volts (mV)')
plt.show()
产生此堆栈
-------------------------------------------------- ---------------------------- FileNotFoundError Traceback(最近一次调用 持续) 〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / IPython / core / formatters.py 在通话中(自己,obj) 330关 331其他: -> 332返回打印机(obj) 333#最后寻找特殊的方法名称 334方法= get_real_method(obj,self.print_method)
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / IPython / core / pylabtools.py 在(图) 235 236 if'png'格式: -> 237 png_formatter.for_type(图,lambda图:print_figure(fig,'png',** kwargs)) 238如果格式为'retina'或格式为'png2x': 239 png_formatter.for_type(图,lambda图:retina_figure(fig,** kwargs))
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / IPython / core / pylabtools.py 在print_figure(fig,fmt,bbox_inches,** kwargs)中 119 120 bytes_io = BytesIO() -> 121图.canvas.print_figure(bytes_io,** kw) 122数据= bytes_io.getvalue() 123 if fmt =='svg':
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / backend_bases.py 在print_figure中(自己,文件名,dpi,facecolor,edgecolor, 方向,格式,bbox_inches,** kwargs)2047
方向=方向,2048 dryrun =真实, -> 2049 ** kwargs)2050渲染器= self.figure._cachedRenderer 2051
bbox_artists = kwargs.pop(“ bbox_extra_artists”,无)〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / backends / backend_agg.py 在print_png中(self,filename_or_obj,* args,** kwargs) 508 509“”“ -> 510 FigureCanvasAgg.draw() 511渲染器= self.get_renderer() 512
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / backends / backend_agg.py 中画(个体经营) 400工具栏= self.toolbar 401尝试: -> 402 self.figure.draw(self.renderer) 403#使用此绘制可能需要一个GUI类来更新窗口,因此 404#不要忘记调用超类。
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / artist.py 在draw_wrapper中(艺术家,渲染器,* args,** kwargs) 48 renderer.start_filter() 49 ---> 50回程画(艺术家,渲染器,* args,** kwargs) 51最后: 52如果artist.get_agg_filter()不是None:
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / figure.py 在draw(自己,渲染器)中1650 1651
mimage._draw_list_compositing_images( -> 1652渲染器,自我,艺术家,self.suppressComposite)1653 1654
renderer.close_group('figure')〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / image.py 在_draw_list_compositing_images(渲染器,父级,艺术家, 抑制(复合) 136如果not_composite或not has_images: 137 in艺术家: -> 138 a.draw(渲染器) 139其他: 140#将任何相邻的图像合成在一起
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / artist.py 在draw_wrapper中(艺术家,渲染器,* args,** kwargs) 48 renderer.start_filter() 49 ---> 50回程画(艺术家,渲染器,* args,** kwargs) 51最后: 52如果artist.get_agg_filter()不是None:
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / axes / _base.py 在draw(self,renderer,inframe)中2602
renderer.stop_rasterizing()2603 -> 2604 mimage._draw_list_compositing_images(渲染器,自我,艺术家)2605 2606 renderer.close_group('axes')〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / image.py 在_draw_list_compositing_images(渲染器,父级,艺术家, 抑制(复合) 136如果not_composite或not has_images: 137 in艺术家: -> 138 a.draw(渲染器) 139其他: 140#将任何相邻的图像合成在一起
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / artist.py 在draw_wrapper中(艺术家,渲染器,* args,** kwargs) 48 renderer.start_filter() 49 ---> 50回程画(艺术家,渲染器,* args,** kwargs) 51最后: 52如果artist.get_agg_filter()不是None:
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / axis.py 在draw(自己,渲染器,* args,** kwargs)中1185 ticks_to_draw = self._update_ticks(renderer)1186 ticklabelBoxes,ticklabelBoxes2 = self._get_tick_bboxes(ticks_to_draw, -> 1187渲染器)用于ticks_to_draw中的勾号1188 1189:
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / axis.py 在_get_tick_bboxes(自己,刻度线,渲染器)1123中用于刻度线 勾选:1124,如果tick.label1On和 tick.label1.get_visible(): -> 1125范围= tick.label1.get_window_extent(renderer)1126
ticklabelBoxes.append(extent)1127如果tick.label2On和 tick.label2.get_visible():〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / text.py 在get_window_extent中(自己,渲染器,dpi) 927引发RuntimeError('无法获得不带渲染器的窗口范围') 928 -> 929 bbox,信息,血统= self._get_layout(self._renderer) 930 x,y = self.get_unitless_position() 931 x,y = self.get_transform()。transform_point((x,y))
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / text.py 在_get_layout中(自己,渲染器) 311 w,h,d = renderer.get_text_width_height_descent(clean_line, 312 self._fontproperties, -> 313 ismath = ismath) 314其他: 315 w,h,d = 0,0,0
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / backends / backend_agg.py 在get_text_width_height_descent(self,s,prop,ismath)中 207字体大小= prop.get_size_in_points() 208 w,h,d = texmanager.get_text_width_height_descent( -> 209秒,fontsize,renderer = self) 210返回w,h,d 211
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / texmanager.py 在get_text_width_height_descent中(self,tex,fontsize,renderer) 第462章 463#使用dviread有时返回错误的下降。 -> 464 dvifile = self.make_dvi(tex,fontsize) 465,其中dviread.Dvi(dvifile,72 * dpi_fraction)作为dvi: 466页= next(iter(dvi))
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / texmanager.py 在make_dvi中(self,tex,fontsize) 第326章 327 [“ latex”,“-interaction = nonstopmode”,“-halt-on-error”, -> 328 texfile],tex) 329对于glob.glob(basefile +'*')中的fname: 330如果不是fname.endswith(('dvi','tex')):
〜/ anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / texmanager.py 在_run_checked_subprocess中(自己,命令,tex) (296)第296章 297 cwd = self.texcache, -> 298 stderr = subprocess.STDOUT) 299,除了subprocess.CalledProcessError作为例外: 300提高RuntimeError(
〜/ anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py在 check_output(超时,* popenargs,** kwargs) 334 335 return run(* popenargs,stdout = PIPE,timeout = timeout,check = True, -> 336 ** kwargs).stdout 337 338
〜/ anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py在运行中(输入, 超时,检查,* popenargs,** kwargs) 401 kwargs ['stdin'] = PIPE 402 -> 403,带有Popen(* popenargs,** kwargs)作为进程: 404尝试: 405 stdout,stderr = process.communicate(input,timeout = timeout)
init 中的〜/ anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py(自身, args,bufsize,可执行文件,stdin,stdout,stderr,preexec_fn, close_fds,shell,cwd,env,universal_newlines,startupinfo, creationflags,restore_signals,start_new_session,pass_fds,编码, 错误) 705 c2pread,c2pwrite, 706 errread,errwrite, -> 707 restore_signals,start_new_session) 708除外: 709#如果孩子无法启动,请清理。
〜/ anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py在 _execute_child(自己,args,可执行文件,preexec_fn,close_fds,pass_fds,cwd,env,startupinfo,creatingflags,shell,p2cread, p2cwrite,c2pread,c2pwrite,errread,errwrite,restore_signals, start_new_session)1331其他:1332
err_msg + =':'+ repr(orig_executable) -> 1333提高child_exception_type(errno_num,err_msg)1334提高child_exception_type(err_msg)
1335FileNotFoundError:[错误2]没有这样的文件或目录:'latex'
答案 0 :(得分:1)
您通过pip安装的latex PyPI project不是完整的乳胶发行版,而是“允许从Python调用LaTeX而不会造成混乱。”
您的第一个示例起作用的原因是没有调用LaTeX。相反,matplotlib使用其自己的TeX表达式解析器,布局引擎和字体:mathtext。在第二个示例中,您确实试图调用LaTeX,但由于未安装tex发行版,因此出现错误!
您将需要确保在系统上安装了tex发行版。 TeXLive或MikTex均可解决问题。另外,matplotlib documentation在使用LaTeX进行文本渲染方面非常好,我建议您阅读一下。