Ich versuche, mit Tikzplotlib ein 2D-Dichtediagramm in Python zu erstellen. Ich muss die Farbleiste (und die entsprechende Z-Achse) im logarithmischen Maßstab haben.
Hier ist das Beispiel der Abbildung im PNG-Format, die ich im Tex-Format haben möchte:
Hier ist der Code, den ich in Python verwende:
f = figure(figsize=(16.2,12.6))
ax = f.add_axes([0.2, 0.02, 0.72, 0.79])
axcolor = f.add_axes([0.95, 0.05, 0.02, 0.72])
im = ax.matshow(fun(X, Y), norm=LogNorm(vmin=1e-1, vmax=1e2))
t = [1e-2, 1e-1, 1e0, 1e1, 1e2]
f.colorbar(im, cax=axcolor, ticks=t)
tikzplotlib.save("2D.tex")
Das Problem ist, dass die Daten zu groß sind und tikzplotlib sie als separate PNG-Datei speichert, die dann in 2D.tex hochgeladen wird. Dann sind sie aber nicht mehr im Log-Maßstab.
Ich habe sehr viel recherchiert, aber alle Antworten, die ich gefunden habe, befassen sich mit Fällen, in denen das Dichtediagramm durch eine Matrix oder Funktion definiert ist. Ich habe stattdessen ein riesiges np.array.
Ich bin für jede Hilfe dankbar
Antwort1
Dies scheint ein Fehler in tikzplotlib zu sein und kann wahrscheinlich nicht vollständig behoben werden, ohne das Modul besser zu verstehen. Generell rate ich, so praktisch es auch ist, davon ab, es für einfache Liniendiagramme zu verwenden. Der Grund dafür ist, dass tikzplot fehleranfällig ist und in den meisten Fällen manuelle Anpassungen im generierten Code erfordert. Ein weiterer Grund ist, konsistente Diagramme mit einem konsistenten Schema zu haben, was besser mit „reinen“ LaTex/PGFPlots erreicht werden sollte. Dies lässt sich am besten mit in PGFPlots definierten „Stilen/Vorlagen“ erreichen.
Um deine Frage zu beantworten: Ein möglicher Workaround wäre, die Daten zu exportieren und das Dokument mit LuaLatex zu kompilieren. LuaLatex hat keine Größenbeschränkung und ich kann es nur wärmstens empfehlen, da es viele weitere Vorteile gegenüber pdfLaTex hat. Wenn du dein ganzes Dokument und nicht nur die Grafik erstellen möchtest, wirst du wahrscheinlich einige Anpassungen an deinem Dokument vornehmen müssen.
SehenWelche Pakete soll ich mit LuaTex laden?für mehr Informationen.
Ich hoffe, dass dir diese Antwort ein wenig weiterhilft.