Использование LaTeX для рендеринга текста
Matplotlib может использовать LaTeX для управления всеми текстовыми макетами. Эта опция доступна для следующих бэкендов:
Опция LaTeX активируется путём установки text.usetex:True
в настройках rc
. Обработка текста с использованием поддержки LaTeX в matplotlib медленнее, чем мощный mathtext, но более гибкая, поскольку можно использовать различные пакеты LaTeX (шрифтовые пакеты, математические пакеты и т. д.). Результаты могут быть впечатляющими, особенно когда вы используете один и тот же шрифт в графике и основном документе.
Для поддержки LaTeX в Matplotlib требуется установленная версия LaTeX, dvipng (может быть включён в вашу установку LaTeX) и Ghostscript (рекомендуется использовать GPL Ghostscript 8.60 или более позднюю версию). Эти исполняемые файлы внешних зависимостей должны находиться в вашем PATH
.
Есть несколько опций, которые можно изменить с помощью настроек rc
. Вот пример файла matplotlibrc
:
font.family : serif
font.serif : Times, Palatino, New Century Schoolbook, Bookman, Computer Modern Roman
font.sans-serif : Helvetica, Avant Garde, Computer Modern Sans serif
font.cursive : Zapf Chancery
font.monospace : Courier, Computer Modern Typewriter
text.usetex : true
Первый доступный шрифт в каждой серии — это шрифт, который будет загружен. Если шрифт не указан, по умолчанию используется шрифт Computer Modern. Все остальные шрифты являются шрифтами Adobe. Times и Palatino имеют собственные математические шрифты, а другие шрифты Adobe с засечками используют математический шрифт Computer Modern. Для получения дополнительной информации см. документ PSNFSS.
Чтобы использовать LaTeX и выбрать Helvetica в качестве шрифта по умолчанию, но не редактировать matplotlibrc
, используйте:
from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
## for Palatine and other serif fonts use:
#rc('font',**{'family':'serif','serif':['Palatino']})
rc('text', usetex=True)
Вот стандартный пример, tex_demo.py
:
"""
Demo of TeX rendering.
You can use TeX to render all of your matplotlib text if the rc
parameter text.usetex is set. This works currently on the agg and ps
backends, and requires that you have tex and the other dependencies
described at http://matplotlib.org/users/usetex.html
properly installed on your system. The first time you run a script
you will see a lot of output from tex and associated tools. The next
time, the run may be silent, as a lot of the information is cached in
~/.tex.cache
"""
import numpy as np
import matplotlib.pyplot as plt
# Example data
t = np.arange(0.0, 1.0 + 0.01, 0.01)
s = np.cos(4 * np.pi * t) + 2
plt.rc('text', usetex=True)
plt.rc('font', family='serif')
plt.plot(t, s)
plt.xlabel(r'\textbf{time} (s)')
plt.ylabel(r'\textit{voltage} (mV)',fontsize=16)
plt.title(r"\TeX\ is Number "
r"$\displaystyle\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$!",
fontsize=16, color='gray')
# Make room for the ridiculously large title.
plt.subplots_adjust(top=0.8)
plt.savefig('tex_demo')
plt.show()
Обратите внимание, что математическое отображение ($$ e=mc^2 $$
) не поддерживается, но добавление команды \displaystyle
даст тот же результат, как в tex_demo.py
.
Примечание
Некоторые символы в TeX требуют специальной экранировки, например:
# $ % & ~ _ ^ \ { } \( \) \[ \]
Поэтому эти символы будут отображаться по-разному в зависимости от флага
rcParam text.usetex
.
Также можно использовать строки Unicode в менеджере текстов LaTeX. Вот пример из tex_unicode_demo.py
:
# -*- coding: utf-8 -*-
"""
This demo is tex_demo.py modified to have unicode. See that file for
more information.
"""
from __future__ import unicode_literals
import numpy as np
import matplotlib
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True
import matplotlib.pyplot as plt
plt.figure(1, figsize=(6, 4))
ax = plt.axes([0.1, 0.1, 0.8, 0.7])
t = np.arange(0.0, 1.0 + 0.01, 0.01)
s = np.cos(2*2*np.pi*t) + 2
plt.plot(t, s)
plt.xlabel(r'\textbf{time (s)}')
plt.ylabel('\\textit{Velocity (\u00B0/sec)}', fontsize=16)
plt.title(r'\TeX\ is Number $\displaystyle\sum_{n=1}^\infty'
r'\frac{-e^{i\pi}}{2^n}$!', fontsize=16, color='r')
plt.grid(True)
plt.show()
Чтобы создать файлы postscript, которые можно встроить в новые документы LaTeX, поведение matplotlib по умолчанию заключается в извлечении вывода, что удаляет некоторые операторы postscript, используемые LaTeX, которые недопустимы в файлах eps. Этот шаг может привести к нежелательным результатам для некоторых пользователей, так как текст грубо растрируется и преобразуется в растровое изображение, а не масштабируется, как обычный Postscript, и текст нельзя искать. Одним из решений является установка ps.distiller.res
на более высокое значение (возможно, 6000) в ваших настройках rc
, что создаст больший файл, но может выглядеть лучше и разумно масштабироваться. Лучшее решение требует Poppler или Xpdf, которое можно активировать, установив ps.usedistiller rc
на xpdf
. Эта альтернатива создаёт postscript без растрирования текста, поэтому он правильно масштабируется и может быть использован в Adobe Illustrator. Редактирование и поиск текста в PDF-документах
Возможные проблемы
На Windows, возможно, потребуется изменить переменную среды PATH, чтобы она включала каталоги исполняемых файлов latex, dvipng и ghostscript. Для получения подробной информации см. разделы «Переменные среды» и «Настройка переменных среды в Windows».
При использовании MiKTeX с шрифтом Computer Modern, если вы получаете странные результаты Agg и PNG, откройте MiKTeX/Options и обновите файл формата.
Шрифт может выглядеть плохо на экране. Возможно, вы работаете на Mac OS, и старая версия dvipng на вашем компьютере делает что-то интересное. В файле matplotlibrc установите text.dvipnghack:True.
На Ubuntu и Gentoo, базовая установка texlive не включает пакет type1cm. Вам может потребоваться установить дополнительные пакеты, чтобы получить все функции, связанные с другими дистрибутивами LaTeX.
Matplotlib уже добился прогресса, поэтому можно напрямую использовать файлы dvi для текстового макета. Это позволяет использовать LaTeX для текстовых макетов с pdf и svg бэкэндами, а также с Agg и PS бэкэндами. В будущем установка LaTeX может стать единственной внешней зависимостью.
Устранение неполадок
Попробуйте удалить каталог .matplotlib/tex.cache. Если вы не знаете, где находится .matplotlib, см. раздел «Расположение конфигурационного каталога matplotlib и каталога кэша».
Убедитесь, что LaTeX, dvipng и ghostscript работают нормально и находятся в вашей переменной среды PATH.
Убедитесь, что то, что вы хотите сделать, выполнимо в документе LaTeX, ваш синтаксис LaTeX действителен, и вы используете исходные строки, чтобы избежать неожиданных последовательностей экранирования, если это необходимо.
Большинство проблем, о которых сообщалось в списке рассылки, были решены путём обновления Ghostscript. Если возможно, попробуйте обновить до последней версии и затем сообщить о проблеме в список рассылки.
Настройка text.latex.preamble rc официально не поддерживается. Этот параметр предоставляет большую гибкость и может вызвать множество проблем. Отключите этот параметр перед сообщением о проблеме в списке рассылки.
Если вам всё ещё нужна помощь, обратитесь к разделу «Сообщение о проблемах».
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )