Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 09.07.2019, 20:56   #1
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию LaTex

Здравствуйте.

Использую библиотеку matplotlib для построения графических изображений и необходимо выводить различные формулы при помощи LaTex.

Оказывается, что встроенный движок в matplotlib не позволяет вывести более сложные конструкции, вроде матриц (или я ошибаюсь...). Пытаюсь вывести
Код:
$\left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]$
но ругается и не понимает даже \begin
Подскажите, уважаемые, как решить данную проблему?
Unique_Maks вне форума   Ответить с цитированием
Старый 10.07.2019, 04:37   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,517
По умолчанию

Цитата:
Сообщение от Unique_Maks Посмотреть сообщение
встроенный движок в matplotlib
Встроенный движок - это не LaTeX, это mathtext - гораздо слабее.
Как подключить LaTeX, читайте здесь
Цитата:
Matplotlib’s LaTeX support requires a working LaTeX installation, dvipng (which may be included with your LaTeX installation), and Ghostscript (GPL Ghostscript 8.60 or later is recommended). The executables for these external dependencies must all be located on your PATH.
Black Fregat вне форума   Ответить с цитированием
Старый 10.07.2019, 12:28   #3
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Встроенный движок - это не LaTeX, это mathtext - гораздо слабее.
Как подключить LaTeX, читайте здесь
Значит все-таки придется устанавливать LaTex.
Спасибо за помощь.
Unique_Maks вне форума   Ответить с цитированием
Старый 28.08.2019, 17:48   #4
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Встроенный движок - это не LaTeX, это mathtext - гораздо слабее.
Как подключить LaTeX, читайте здесь
Установил MiKTeX, dvipng, Ghostscript.

В коде делаю так:
Код:
import matplotlib
matplotlib.use('agg') 
import matplotlib.pyplot as plt
from sympy import latex
...

# Строку \left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]
# генерирует функция sympy.latex()
latex_to_img(r"$\left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]$", FILE_NAME_MATRIX)

...
def latex_to_img(str_latex, file_name):
	
	plt.rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
	plt.rc('text', usetex=True)

	fig = plt.figure()
	ax = fig.add_axes([0,0,1,1])
	ax.set_axis_off()
	### Отрисовка формулы
	t = ax.text(0.5, 0.5, str_latex, 
		horizontalalignment='center', 
		verticalalignment='center',
		fontsize=32, 
		color='black')
	### Определение размеров формулы
	ax.figure.canvas.draw()
	bbox = t.get_window_extent()
	#print(bbox.width, bbox.height)
	# Установка размеров области отрисовки
	fig.set_size_inches(bbox.width/80, bbox.height/80) # dpi=80
	save(file_name, config.FILE_EXPANSION)
Пытаясь обработать строку
Код:
\left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]
выводится большое сообщение об ошибках...

Цитата:
RuntimeError: latex was not able to process the following string:
b'$\\\\left[\\\\begin{matrix}2 & 4 & 6\\\\\\\\4 & 6 & 8\\\\\\\\8 & 6 & 4\\\\end{matrix}\\\\right]$'

Here is the full report generated by latex:
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/W32TeX) (preloaded format=latex)
restricted \write18 enabled.
entering extended mode
(c:/Users/msrevkov/.matplotlib/tex.cache/7b0c91ed78ceb07701f3d2b71c0c8048.te x
LaTeX2e <2018-12-01>
(c:/texlive/2019/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(c:/texlive/2019/texmf-dist/tex/latex/base/size10.clo))
(c:/texlive/2019/texmf-dist/tex/latex/type1cm/type1cm.sty)
(c:/texlive/2019/texmf-dist/tex/latex/psnfss/helvet.sty
(c:/texlive/2019/texmf-dist/tex/latex/graphics/keyval.sty))
(c:/texlive/2019/texmf-dist/tex/latex/base/textcomp.sty
(c:/texlive/2019/texmf-dist/tex/latex/base/ts1enc.def
(c:/texlive/2019/texmf-dist/tex/latex/base/ts1enc.dfu)))
(c:/texlive/2019/texmf-dist/tex/latex/base/inputenc.sty)
(c:/texlive/2019/texmf-dist/tex/latex/geometry/geometry.sty
(c:/texlive/2019/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
(c:/texlive/2019/texmf-dist/tex/generic/oberdiek/ifvtex.sty)
(c:/texlive/2019/texmf-dist/tex/generic/ifxetex/ifxetex.sty)

Package geometry Warning: Over-specification in `h'-direction.
`width' (5058.9pt) is ignored.


Package geometry Warning: Over-specification in `v'-direction.
`height' (5058.9pt) is ignored.

) (./7b0c91ed78ceb07701f3d2b71c0c8048.au x)
(c:/texlive/2019/texmf-dist/tex/latex/base/ts1cmr.fd)
*geometry* driver: auto-detecting
*geometry* detected driver: dvips
(c:/texlive/2019/texmf-dist/tex/latex/psnfss/ot1phv.fd)
! Misplaced alignment tab character &.
l.14 ...000000}{\sffamily $\left[\begin{matrix}2 &
4 & 6\\4 & 6 & 8\\8 & 6 &...
No pages of output.
Transcript written on 7b0c91ed78ceb07701f3d2b71c0c8048.lo g.
Unique_Maks вне форума   Ответить с цитированием
Старый 30.08.2019, 15:01   #5
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Unique_Maks Посмотреть сообщение
Установил MiKTeX, dvipng, Ghostscript.

В коде делаю так:
Код:
import matplotlib
matplotlib.use('agg') 
import matplotlib.pyplot as plt
from sympy import latex
...

# Строку \left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]
# генерирует функция sympy.latex()
latex_to_img(r"$\left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]$", FILE_NAME_MATRIX)

...
def latex_to_img(str_latex, file_name):
	
	plt.rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
	plt.rc('text', usetex=True)

	fig = plt.figure()
	ax = fig.add_axes([0,0,1,1])
	ax.set_axis_off()
	### Отрисовка формулы
	t = ax.text(0.5, 0.5, str_latex, 
		horizontalalignment='center', 
		verticalalignment='center',
		fontsize=32, 
		color='black')
	### Определение размеров формулы
	ax.figure.canvas.draw()
	bbox = t.get_window_extent()
	#print(bbox.width, bbox.height)
	# Установка размеров области отрисовки
	fig.set_size_inches(bbox.width/80, bbox.height/80) # dpi=80
	save(file_name, config.FILE_EXPANSION)
Пытаясь обработать строку
Код:
\left[\begin{matrix}2 & 4 & 6\\4 & 6 & 8\\8 & 6 & 4\end{matrix}\right]
выводится большое сообщение об ошибках...
Разобрался.
Ошибка была связана с неверным использованием амперсанда (&).
Решение указано тут
Unique_Maks вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Latex Krasi Свободное общение 0 26.03.2010 19:35


06:45.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.