matplot2tikz
L'artista precedentemente conosciuto come tikzplotlib.Questo è matplot2tikz, uno strumento Python per convertire figure matplotlib in figure PGFPlots (PGF/TikZ) come

per l'inclusione nativa in documenti LaTeX o ConTeXt.
L'output di matplot2tikz è in PGFPlots, una libreria TeX che si basa su PGF/TikZ e descrive i grafici in termini di assi, dati, ecc. Di conseguenza, l'output di matplot2tikz
- conserva più informazioni,
- può essere più facilmente compreso, e
- è più facilmente modificabile
import matplotlib.pyplot as plt
import numpy as npplt.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() invece di save() se desideri il codice come stringa.)Modificare il grafico è semplice e può essere fatto come parte del tuo flusso di lavoro TeX. Il fantastico manuale di PGFPlots contiene ottimi esempi su come rendere il tuo grafico ancora migliore.
Ovviamente, non tutte le figure prodotte da matplotlib possono essere convertite senza errori. In particolare, i grafici 3D non funzionano.
Installazione
matplot2tikz è disponibile dal Python Package Index, quindi basta eseguire
pip install matplot2tikzper installare.
Utilizzo
- Genera il tuo grafico matplotlib come al solito.
- Invece di
pyplot.show(), richiama matplot2tikz tramite
python
import matplot2tikz matplot2tikz.save("mytikz.tex")
# or
matplot2tikz.save("mytikz.tex", flavor="context")
` per memorizzare il file TikZ come
mytikz.tex.- Aggiungi il contenuto di
mytikz.tex nel tuo codice sorgente TeX. Un modo conveniente per farlo
è tramite
`latex
\input{/path/to/mytikz}
` Assicurati inoltre che i pacchetti per PGFPlots e il corretto supporto Unicode siano
inclusi nell'intestazione del tuo 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}
`
Puoi anche ottenere il codice tramite:
`python
import matplot2tikz matplot2tikz.Flavors.latex.preamble()
# or
matplot2tikz.Flavors.context.preamble()
`- [Opzionale] Pulisci la figura prima di esportarla in tikz usando il comando
clean_figure.
`python
import matplotlib.pyplot as plt
import numpy as np # ... do your plotting
import matplot2tikz
matplot2tikz.clean_figure()
matplot2tikz.save("test.tex")
`
Il comando rimuoverà i punti che sono al di fuori dei limiti degli assi, semplificherà le curve e
ridurrà la densità dei punti per la risoluzione di destinazione specificata.matplot2tikz vs. tikzplotlib
Questa libreria matplot2tikz ha origine dal progetto tikzplotlib.
La ragione per cui è stata creata una nuova libreria è che tikzplotlib non è più mantenuta e
la manutenzione poteva essere effettuata solo dal singolo proprietario della libreria tikzplotlib.
Se hai bisogno di usare codice di terze parti che già dipende da tikzplotlib, si suggerisce di cambiare
la dipendenza da tikzplotlib a matplot2tikz.
Se ciò non è possibile, una soluzione alternativa è inserire il seguente codice prima di importare il
codice di terze parti:
`
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.
`Contribuire
Se riscontri bug, desideri contribuire, hai ottimi esempi di ciò che matplot2tikz
può fare, o se semplicemente cerchi maggiori informazioni, visita
la pagina GitHub di matplot2tikz.
Per contribuire, segui questi passaggi:
- Scarica il repository git, ad esempio utilizzando
git clone git@github.com:ErwindeGelder/matplot2tikz.git.
- Crea un ambiente virtuale, ad esempio utilizzando
python -m venv venv.
Attiva l'ambiente virtuale (ad esempio, su Windows, venv\Scripts\activate).
Installa uv usando pip install uv e poi tox-uv usando uv pip install tox-uv.
Il branch principale è protetto, il che significa che non puoi inviare modifiche direttamente a questo branch.
Pertanto, se vuoi apportare modifiche, fallo in un branch separato. Ad esempio, puoi creare
un nuovo branch usando git checkout -b feature/mia_fantastica_nuova_feature.
- Prima di inviare le modifiche, assicurati che il codice rispetti le regole di linting e che i test siano
superati. Esegui tox. Questo esegue un controllo di linting e tutti gli script di test. Per eseguire manualmente
questi passaggi, usa i seguenti comandi:
- Esegui
tox -e lint. Puoi eseguire manualmente i comandi di linting usando:
(Una volta sola) uv pip install -r requirements-lint.txt
ruff format . --check (rimuovi il flag --check per lasciare che ruff formatti)
ruff check .
mypy .
Esegui tox -e py310.
Esegui tox -e py311.
Esegui tox -e py312.
Esegui tox -e py313.
Esegui tox -e py314.
Esegui tox -e combine-test-reports
Verifica che i test abbiano coperto tutto utilizzando il report di copertura in
/reports/coverage_html/index.html. NOTA: Attualmente, non tutto il codice è coperto. Idealmente, tutto il codice dovrebbe esserlo, ma per ora assicurati che
tutto il nuovo codice sia coperto dai test.
- Invia le modifiche su GitHub. Se tutto è OK e vuoi unire le tue modifiche nel branch
main,
crea una pull request.
Idealmente, ci dovrebbe essere almeno un revisore che controlla la pull request prima della fusione.Nota che attualmente solo i "Code owners" possono unire le pull request sul branch
main`. Questo serve a
garantire che non tutti possano compromettere il codice principale (anche involontariamente). Se vuoi diventare un "Code owner",
faccelo sapere!Licenza
matplot2tikz è pubblicato sotto la licenza MIT.
--- Tranlated By Open Ai Tx | Last indexed: 2025-12-11 ---