Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2019, 19: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, 03:37   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от 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, 11:28   #3
Unique_Maks
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Встроенный движок - это не LaTeX, это mathtext - гораздо слабее.
Как подключить LaTeX, читайте здесь
Значит все-таки придется устанавливать LaTex.
Спасибо за помощь.
Unique_Maks вне форума Ответить с цитированием
Старый 28.08.2019, 16: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, 14: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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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