Web Analytics

matplot2tikz

⭐ 266 stars Russian by ErwindeGelder

🌐 Язык

matplot2tikz

Ранее известен как tikzplotlib.

PyPI - Version GitHub License PyPI - Python Version Ruff Проверено mypy

codecov PyPI Downloads

Это matplot2tikz, инструмент на Python для преобразования графиков matplotlib в фигуры PGFPlots (PGF/TikZ), например,

для нативного включения в документы LaTeX или ConTeXt.

Результат работы matplot2tikz — это PGFPlots, библиотека TeX, которая построена поверх PGF/TikZ и описывает графики в терминах осей, данных и т.д. Следовательно, результат matplot2tikz

чем сырой вывод TikZ. Например, график matplotlib

import matplotlib.pyplot as plt
import numpy as np

plt.style.use("ggplot")

t = np.arange(0.0, 2.0, 0.1) s = np.sin(2 np.pi t) s2 = np.cos(2 np.pi t) plt.plot(t, s, "o-", lw=4.1) plt.plot(t, s2, "o-", lw=4.1) plt.xlabel("time (s)") plt.ylabel("Voltage (mV)") plt.title("Simple plot $\\frac{\\alpha}{2}$") plt.grid(True)

import matplot2tikz

matplot2tikz.save("test.tex")

--> (see above) gives

\begin{tikzpicture}

\definecolor{chocolate2267451}{RGB}{226,74,51} \definecolor{dimgray85}{RGB}{85,85,85} \definecolor{gainsboro229}{RGB}{229,229,229} \definecolor{steelblue52138189}{RGB}{52,138,189} \begin{axis}[ axis background/.style={fill=gainsboro229}, axis line style={white}, tick align=outside, tick pos=left, title={Simple plot \(\displaystyle \frac{\alpha}{2}\)}, x grid style={white}, xlabel=\textcolor{dimgray85}{time (s)}, xmajorgrids, xmin=-0.095, xmax=1.995, xtick style={color=dimgray85}, y grid style={white}, ylabel=\textcolor{dimgray85}{Voltage (mV)}, ymajorgrids, ymin=-1.1, ymax=1.1, ytick style={color=dimgray85} ] \addplot [line width=1.64pt, chocolate2267451, mark=*, mark size=3, mark options={solid}] table {% 0 0 % [...] 1.9 -0.587785252292473 }; \addplot [line width=1.64pt, steelblue52138189, mark=*, mark size=3, mark options={solid}] table {% 0 1 % [...] 1.9 0.809016994374947 }; \end{axis}

\end{tikzpicture}

(Используйте get_tikz_code() вместо save(), если вы хотите получить код в виде строки.)

Настройка графика проста и может быть выполнена в рамках вашего рабочего процесса TeX. Отличное руководство PGFPlots содержит отличные примеры того, как сделать ваш график ещё лучше.

Конечно, не все фигуры, созданные с помощью matplotlib, могут быть преобразованы без ошибок. В частности, 3D-графики не поддерживаются.

Установка

matplot2tikz доступен в Python Package Index, так что просто выполните

pip install matplot2tikz
для установки.

Использование

``python import matplot2tikz

matplot2tikz.save("mytikz.tex") # or matplot2tikz.save("mytikz.tex", flavor="context") ` чтобы сохранить файл TikZ как mytikz.tex.

это — использовать

`latex \input{/path/to/mytikz} `

Также убедитесь, что пакеты для PGFPlots и корректной поддержки Unicode включены в заголовок вашего документа:

`latex \usepackage[utf8]{inputenc} \usepackage{pgfplots} \DeclareUnicodeCharacter{2212}{−} \usepgfplotslibrary{groupplots,dateplot} \usetikzlibrary{patterns,shapes.arrows} \pgfplotsset{compat=newest} `

or:

`latex \setupcolors[state=start] \usemodule[tikz] \usemodule[pgfplots] \usepgfplotslibrary[groupplots,dateplot] \usetikzlibrary[patterns,shapes.arrows] \pgfplotsset{compat=newest} \unexpanded\def\startgroupplot{\groupplot} \unexpanded\def\stopgroupplot{\endgroupplot} `

Вы также можете получить код через:

`python import matplot2tikz

matplot2tikz.Flavors.latex.preamble() # or matplot2tikz.Flavors.context.preamble() `

`python import matplotlib.pyplot as plt import numpy as np

# ... do your plotting

import matplot2tikz

matplot2tikz.clean_figure() matplot2tikz.save("test.tex") `

Эта команда удалит точки, находящиеся вне пределов осей, упростит кривые и уменьшит плотность точек для указанного целевого разрешения.

matplot2tikz vs. tikzplotlib

Эта библиотека matplot2tikz возникла из проекта tikzplotlib. Причиной создания новой библиотеки стало то, что tikzplotlib больше не поддерживается, а поддержка могла осуществляться только единственным владельцем библиотеки tikzplotlib. Если вам нужно использовать сторонний код, который уже зависит от tikzplotlib, рекомендуется заменить зависимость tikzplotlib на matplot2tikz. Если это невозможно, можно воспользоваться следующим обходным решением — разместить следующий код до импорта стороннего кода:

` import sys import matplot2tikz sys.modules["tikzplotlib"] = matplot2tikz # Do other imports, e.g., using import my_third_party_library # If tikzplotlib is used in this library, it will automatically use matplot2tikz instead. `

Вклад в проект

Если вы столкнулись с ошибками, хотите внести свой вклад, имеете интересные примеры того, что может matplot2tikz, или просто ищете дополнительную информацию, посетите страницу matplot2tikz на GitHub.

Для вклада в проект выполните следующие шаги:

git clone git@github.com:ErwindeGelder/matplot2tikz.git. Поэтому, если вы хотите внести изменения, сделайте это в отдельной ветке. Например, вы можете создать новую ветку с помощью git checkout -b feature/my_awesome_new_feature.
  • Перед отправкой изменений убедитесь, что код соответствует правилам линтинга и что тесты
проходят успешно. Запустите
tox. Это выполнит проверку линтинга и все тестовые скрипты. Чтобы выполнить эти шаги вручную, используйте следующие команды: /reports/coverage_html/index.html.

ПРИМЕЧАНИЕ: В настоящее время не весь код покрыт тестами. В идеале, тестами должен быть покрыт весь код, но пока убедитесь, что весь новый код покрыт тестированием.

создайте pull request. В идеале, перед слиянием pull request должен быть проверен хотя бы одним рецензентом.

Обратите внимание, что в настоящее время только "владельцы кода" могут выполнять слияние pull-запросов в ветку main`. Это сделано для того, чтобы не каждый мог случайно нарушить основной код (даже непреднамеренно). Если вы хотите стать "владельцем кода", сообщите нам!

Лицензия

matplot2tikz опубликован под лицензией MIT license.

--- Tranlated By Open Ai Tx | Last indexed: 2025-12-11 ---