Как установить путь латекса для matplotlib - PullRequest
1 голос
/ 30 марта 2019

Я пытаюсь построить латекс с помощью matplotlib. Я установил латекс с пипом. этот пример хорошо работает

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 / Библиотека / python3.6 / сайт-пакеты / IPython / ядро ​​/ formatters.py в звоните (self, obj) 330 проход 331 еще: -> 332 возврата принтера (объект) 333 # Наконец, ищите специальные имена методов 334 method = get_real_method (obj, self.print_method)

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / IPython / ядро ​​/ pylabtools.py в (рис) 235 236, если 'png' в форматах: -> 237 png_formatter.for_type (Рисунок, лямбда-рис: print_figure (рис., 'Png', ** kwargs)) 238 если 'retina' в форматах или 'png2x' в форматах: 239 png_formatter.for_type (Рисунок, лямбда-рис: retina_figure (рис., ** kwargs))

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / IPython / ядро ​​/ pylabtools.py в print_figure (рис., fmt, bbox_inches, ** kwargs) 119 120 bytes_io = BytesIO () -> 121 fig.canvas.print_figure (bytes_io, ** kw) 122 data = bytes_io.getvalue () 123 if fmt == 'svg':

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / backend_bases.py в print_figure (self, filename, dpi, facecolor, edgecolor, ориентация, формат, bbox_inches, ** kwargs) 2047
ориентация = ориентация, 2048 dryrun = True, -> 2049 ** kwargs) 2050 renderer = self.figure._cachedRenderer 2051
bbox_artists = kwargs.pop ("bbox_extra_artists", нет)

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / бэкэнды / backend_agg.py в print_png (self, filename_or_obj, * args, ** kwargs) 508 509 "" " -> 510 FigureCanvasAgg.draw (self) 511 renderer = self.get_renderer () 512

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / бэкэнды / backend_agg.py в розыгрыше 400 toolbar = self.toolbar 401 попробуй: -> 402 self.figure.draw (self.renderer) 403 # Классу GUI может потребоваться обновить окно, используя этот чертеж, поэтому 404 # не забудьте вызвать суперкласс.

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / 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 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / figure.py в розыгрыше (self, renderer) 1650 1651
mimage._draw_list_compositing_images ( -> 1652 рендер, я, художники, self.suppressComposite) 1653 1654
renderer.close_group ( 'фигура')

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / image.py в _draw_list_compositing_images (рендер, родитель, исполнители, suppress_composite) 136 если not_composite или нет has_images: 137 для артистов: -> 138 a.draw (средство визуализации) Еще 139: 140 # Скомпоновать любые соседние изображения вместе

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / 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 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / оси / _base.py в розыгрыше (self, renderer, inframe) 2602
renderer.stop_rasterizing () 2603 -> 2604 mimage._draw_list_compositing_images (визуализатор, автор, художники) 2605 2606 renderer.close_group ('axes')

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / image.py в _draw_list_compositing_images (рендер, родитель, исполнители, suppress_composite) 136 если not_composite или нет has_images: 137 для артистов: -> 138 a.draw (средство визуализации) Еще 139: 140 # Скомпоновать любые соседние изображения вместе

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / 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 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / axis.py в розыгрыше (self, renderer, * args, ** kwargs) 1185 ticks_to_draw = self._update_ticks (средство визуализации) 1186 ticklabelBoxes, ticklabelBoxes2 = self._get_tick_bboxes (ticks_to_draw, -> 1187 рендер) 1188 1189 для тика в ticks_to_draw:

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / axis.py в _get_tick_bboxes (self, ticks, renderer) 1123 для галочки в ticks: 1124, если tick.label1On и tick.label1.get_visible (): -> 1125 экстент = tick.label1.get_window_extent (средство визуализации) 1126
ticklabelBoxes.append (экстент) 1127, если tick.label2On и tick.label2.get_visible ():

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / text.py в get_window_extent (self, renderer, dpi) 927 повысить RuntimeError («Невозможно получить экстент окна без средства визуализации») 928 -> 929 bbox, info, descent = 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 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / text.py в _get_layout (self, renderer) 311 w, h, d = renderer.get_text_width_height_descent (clean_line, 312 self._fontproperties, -> 313 Исмат = Исмат) 314 еще: 315 ш, ч, д = 0, 0, 0

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / бэкэнды / backend_agg.py в get_text_width_height_descent (self, s, prop, ismath) 207 fontsize = prop.get_size_in_points () 208 ш, ч, д = texmanager.get_text_width_height_descent ( -> 209 с, размер шрифта, визуализация = self) 210 возврат, ч, ч, д 211

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / 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 страница = следующая (iter (DVI))

~ / anaconda3 / envs / tf11 / Библиотека / python3.6 / сайт-пакеты / Matplotlib / texmanager.py в make_dvi (self, tex, fontsize) 326 self._run_checked_subprocess ( 327 ["latex", "-interaction = nonstopmode", "--halt-on-error", -> 328 texfile], tex)329 для fname в glob.glob (basefile + '*'): 330, если не fname.endswith (('dvi', 'tex')):

~ / anaconda3 / envs / tf11 / lib / python3.6 / site-packages / matplotlib / texmanager.py в _run_checked_subprocess (self, command, tex) 296 report = subprocess.check_output (команда, 297 cwd = self.texcache, -> 298 stderr = subprocess.STDOUT) 299 кроме подпроцесса.CalledProcessError as exc: 300 повысить RuntimeError (

~ / anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py в check_output (тайм-аут, * popenargs, ** kwargs) 334 335 возвратный прогон (*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 try: 405 stdout, stderr =process.communicate (input, timeout = timeout)

~ / anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py в init (self, args, bufsize, исполняемый файл,stdin, stdout, stderr, preexec_fn, close_fds, оболочка, cwd, env, universal_newlines, startupinfo, флаги создания, restore_signals, start_new_session, pass_fds, кодировка, ошибки) 705 c2pread, c2pwrite, 706 ошибочных, 707 новичков_исключений, ->708 кроме: 709 # Очистка, если дочерний процесс не запустился.

~ / anaconda3 / envs / tf11 / lib / python3.6 / subprocess.py в _execute_child (self, args, исполняемый файл, preexec_fn, close_fds, pass_fds,cwd, env, startupinfo, флаги создания, оболочка, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session) 1331 иначе: 1332
err_msg + = ':' + repr (orig_executable) -> 1333 повышениеerrno_num, err_msg) 1334 повысить child_exception_type (err_msg)
1335

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'latex'

1 Ответ

1 голос
/ 30 марта 2019

Проект latex PyPI , который вы установили с помощью pip, является , а не полным латексным дистрибутивом, вместо этого он "позволяет вызывать LaTeX из Python, не оставляя беспорядка".

Причина, по которой ваш первый пример работает, заключается в том, что нет вызова LaTeX. Вместо этого matplotlib использует собственный синтаксический анализатор выражений TeX, механизм разметки и шрифты: mathtext . Во втором примере вы действительно пытаетесь вызвать LaTeX, но получаете сообщение об ошибке, так как у вас не установлен tex дистрибутив!

Вам необходимо убедиться, что в вашей системе установлен дистрибутив tex. Либо TeXLive , либо MikTex справится с задачей. Кроме того, документация matplotlib по визуализации текста с LaTeX очень хороша, и я рекомендую вам прочитать ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...