1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-matplotlib-user-guide-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
4.7.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 03:14 86b54d1

Использование LaTeX для рендеринга текста

Matplotlib может использовать LaTeX для управления всеми текстовыми макетами. Эта опция доступна для следующих бэкендов:

  • Agg;
  • PS;
  • PDF.

Опция 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 в TeX

Также можно использовать строки 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

Чтобы создать файлы postscript, которые можно встроить в новые документы LaTeX, поведение matplotlib по умолчанию заключается в извлечении вывода, что удаляет некоторые операторы postscript, используемые LaTeX, которые недопустимы в файлах eps. Этот шаг может привести к нежелательным результатам для некоторых пользователей, так как текст грубо растрируется и преобразуется в растровое изображение, а не масштабируется, как обычный Postscript, и текст нельзя искать. Одним из решений является установка ps.distiller.res на более высокое значение (возможно, 6000) в ваших настройках rc, что создаст больший файл, но может выглядеть лучше и разумно масштабироваться. Лучшее решение требует Poppler или Xpdf, которое можно активировать, установив ps.usedistiller rc на xpdf. Эта альтернатива создаёт postscript без растрирования текста, поэтому он правильно масштабируется и может быть использован в Adobe Illustrator. Редактирование и поиск текста в PDF-документах

Возможные проблемы

  1. На Windows, возможно, потребуется изменить переменную среды PATH, чтобы она включала каталоги исполняемых файлов latex, dvipng и ghostscript. Для получения подробной информации см. разделы «Переменные среды» и «Настройка переменных среды в Windows».

  2. При использовании MiKTeX с шрифтом Computer Modern, если вы получаете странные результаты Agg и PNG, откройте MiKTeX/Options и обновите файл формата.

  3. Шрифт может выглядеть плохо на экране. Возможно, вы работаете на Mac OS, и старая версия dvipng на вашем компьютере делает что-то интересное. В файле matplotlibrc установите text.dvipnghack:True.

  4. На Ubuntu и Gentoo, базовая установка texlive не включает пакет type1cm. Вам может потребоваться установить дополнительные пакеты, чтобы получить все функции, связанные с другими дистрибутивами LaTeX.

  5. Matplotlib уже добился прогресса, поэтому можно напрямую использовать файлы dvi для текстового макета. Это позволяет использовать LaTeX для текстовых макетов с pdf и svg бэкэндами, а также с Agg и PS бэкэндами. В будущем установка LaTeX может стать единственной внешней зависимостью.

Устранение неполадок

  1. Попробуйте удалить каталог .matplotlib/tex.cache. Если вы не знаете, где находится .matplotlib, см. раздел «Расположение конфигурационного каталога matplotlib и каталога кэша».

  2. Убедитесь, что LaTeX, dvipng и ghostscript работают нормально и находятся в вашей переменной среды PATH.

  3. Убедитесь, что то, что вы хотите сделать, выполнимо в документе LaTeX, ваш синтаксис LaTeX действителен, и вы используете исходные строки, чтобы избежать неожиданных последовательностей экранирования, если это необходимо.

  4. Большинство проблем, о которых сообщалось в списке рассылки, были решены путём обновления Ghostscript. Если возможно, попробуйте обновить до последней версии и затем сообщить о проблеме в список рассылки.

  5. Настройка text.latex.preamble rc официально не поддерживается. Этот параметр предоставляет большую гибкость и может вызвать множество проблем. Отключите этот параметр перед сообщением о проблеме в списке рассылки.

  6. Если вам всё ещё нужна помощь, обратитесь к разделу «Сообщение о проблемах».

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-matplotlib-user-guide-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-matplotlib-user-guide-zh.git
oschina-mirror
wizardforcel-matplotlib-user-guide-zh
wizardforcel-matplotlib-user-guide-zh
master