Web Analytics

matplot2tikz

⭐ 266 stars Spanish by ErwindeGelder

🌐 Idioma

matplot2tikz

El artista anteriormente conocido como tikzplotlib.

PyPI - Versión Licencia GitHub PyPI - Versión de Python Ruff Checked with mypy codecov Descargas PyPI

Esto es matplot2tikz, una herramienta de Python para convertir figuras de matplotlib en figuras de PGFPlots (PGF/TikZ) como

para su inclusión nativa en documentos LaTeX o ConTeXt.

La salida de matplot2tikz está en PGFPlots, una biblioteca de TeX que se sitúa sobre PGF/TikZ y describe gráficos en términos de ejes, datos, etc. En consecuencia, la salida de matplot2tikz

que la salida TikZ cruda. Por ejemplo, la figura de 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}

(Usa get_tikz_code() en lugar de save() si quieres el código como una cadena.)

Ajustar el gráfico es sencillo y puede hacerse como parte de tu flujo de trabajo en TeX. El fantástico manual de PGFPlots contiene excelentes ejemplos de cómo hacer que tu gráfico se vea aún mejor.

Por supuesto, no todas las figuras producidas por matplotlib pueden convertirse sin error. Notablemente, los gráficos 3D no funcionan.

Instalación

matplot2tikz está disponible en el Índice de Paquetes de Python, así que simplemente haz

pip install matplot2tikz

para instalar.

Uso

``python import matplot2tikz

matplot2tikz.save("mytikz.tex") # or matplot2tikz.save("mytikz.tex", flavor="context") `

para almacenar el archivo TikZ como mytikz.tex.

es mediante

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

También asegúrese de que los paquetes para PGFPlots y el soporte adecuado de Unicode estén incluidos en el encabezado de su documento:

`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} `

También puede obtener el código a través de:

`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") `

El comando eliminará puntos que estén fuera de los límites de los ejes, simplificará curvas y reducirá la densidad de puntos para la resolución objetivo especificada.

matplot2tikz vs. tikzplotlib

Esta biblioteca matplot2tikz se originó a partir del proyecto tikzplotlib. La razón por la que se creó una nueva biblioteca es porque tikzplotlib ya no se mantiene y el mantenimiento solo podía ser realizado por el único propietario de la biblioteca tikzplotlib. Si necesita usar código de terceros que ya dependa de tikzplotlib, se sugiere cambiar la dependencia de tikzplotlib a matplot2tikz. Si esto no es posible, una solución alternativa es poner el siguiente código antes de importar el código de terceros:

` 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. `

Contribuyendo

Si experimentas errores, deseas contribuir, tienes buenos ejemplos de lo que matplot2tikz puede hacer, o si simplemente buscas más información, entonces por favor visita la página de GitHub de matplot2tikz.

Para contribuir, sigue estos pasos:

git clone git@github.com:ErwindeGelder/matplot2tikz.git. Por lo tanto, si quieres hacer cambios, hazlo en una rama separada. Por ejemplo, puedes crear una nueva rama usando git checkout -b feature/my_awesome_new_feature.
  • Antes de hacer push de los cambios, asegúrate de que el código cumple con las reglas de linting y que las pruebas son
exitosas. Ejecuta
tox. Esto hace una verificación de linting y ejecuta todos los scripts de prueba. Para realizar estos pasos manualmente, usa los siguientes comandos: /reports/coverage_html/index.html.

NOTA: Actualmente, no todo el código está cubierto. Idealmente, todo el código debería estar cubierto, pero por ahora, asegúrate de que todo el código nuevo esté cubierto por las pruebas.

crea un pull request. Idealmente, debe haber al menos un revisor que revise el pull request antes de la fusión.

Tenga en cuenta que actualmente solo los "Propietarios del código" pueden fusionar solicitudes de extracción en la rama main`. Esto es para asegurar que no todos puedan romper el código principal (incluso sin intención). Si desea ser un "Propietario del código", ¡háganoslo saber!

Licencia

matplot2tikz se publica bajo la licencia MIT.

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