extern eingebundene pgfplots an achsen ausrichten?
extern eingebundene pgfplots an achsen ausrichten?
Hallo,
um die Kompilierungszeit zu verkürzen nutze ich in meinen pgfplots \tikzexternalize. Nur kann ich meine Diagramme wenn ich sie per \includegrafics einbinde nicht an einem bestimmten Punkt z.B. x-Achsenmittelpunkt ausrichten weil z.B. Legendeneinträge und Achsenbischriftungen unterschiedlich ausfallen. Kennt da jemand eine Möglichkeit die Ausrichtung entsprechend anzupassen?
Grüße
FloRida
um die Kompilierungszeit zu verkürzen nutze ich in meinen pgfplots \tikzexternalize. Nur kann ich meine Diagramme wenn ich sie per \includegrafics einbinde nicht an einem bestimmten Punkt z.B. x-Achsenmittelpunkt ausrichten weil z.B. Legendeneinträge und Achsenbischriftungen unterschiedlich ausfallen. Kennt da jemand eine Möglichkeit die Ausrichtung entsprechend anzupassen?
Grüße
FloRida
Ich habe nicht ganz verstanden, was Du machen möchtest. Aber vielleicht hilft Dir: Wie kann ich zwei pgfplots Diagramme übereinander ausrichten?
Gruß
Elke
Gruß
Elke
Hallo Elke,
so änhlich. Ich erstelle die Diagramme in einem anderen tex-File. Nach kompilieren liegen mit dann passgenaue pdf-Dateien lediglich mit den Diagrammen vor (siehe http://www.ctan.org/pkg/pgfplots). Diese füge ich dann in mein eigentliches Dokument mit \includegraphics{} ein. Jetzt kann ich aber nicht mehr an einer Achse ausrichten, wie ich es machen könnte, wenn ich alles zusammen in einer Datei erzeugen würde.
Grüße
FloRida
so änhlich. Ich erstelle die Diagramme in einem anderen tex-File. Nach kompilieren liegen mit dann passgenaue pdf-Dateien lediglich mit den Diagrammen vor (siehe http://www.ctan.org/pkg/pgfplots). Diese füge ich dann in mein eigentliches Dokument mit \includegraphics{} ein. Jetzt kann ich aber nicht mehr an einer Achse ausrichten, wie ich es machen könnte, wenn ich alles zusammen in einer Datei erzeugen würde.
Grüße
FloRida
- Johannes_B
- Moderator
- Beiträge: 5079
- Registriert: Do 1. Nov 2012, 14:55
- Kontaktdaten:
Ein Bild ist letztlich auch nur eine Box, wenn du zwei davon hast, musst du versuchen diese mit Augemaß aneinander auszurichten. Du kannst die pdfs auch in tikz nodes packen, vielleicht fällt dir das ausrichten so leichter.
Eventuell habe ich es auch falsch verstanden. Ein Minimalbeispiel hast du ja leider nicht geliefert.
Eventuell habe ich es auch falsch verstanden. Ein Minimalbeispiel hast du ja leider nicht geliefert.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
Du kannst ja die Bilder so erzeugen, dass die Achsen, oder was auch immer du ausrichten willst, in vordefinierten Abständen von den jeweiligen Rändern sind.
Ulrike Fischer
www.troubleshooting-tex.de
www.troubleshooting-tex.de
-
- Forum-Fortgeschrittener
- Beiträge: 91
- Registriert: Mi 5. Okt 2011, 18:24
- Wohnort: Rheinbach
Hi,
verstehe ich es richtig, dass Du in einem ersten Schritt Bilder externalisierst, und diese dann an _mehreren_ Stellen wieder mittels \includegraphics einbindest?
Pgfplots kommt von Haus aus mit einigen Tips zum automatischen Alignment. Einer dieser Ansaetze funktioniert auch gut mit externalization: trim axis left/trim axis right/baseline. Wie mir aufgefallen ist, fehlt zu Deinem Anwendungsfall lediglich die Dokumentation fuer ein spezialisiertes includegraphics makro.
Doch zunaechst der code:
Das Beispiel hat ein tikzpicture, dass durch Achsenbeschriftungen nicht natuerlicherweise zentriert ist.
Durch die Angabe von trim axis left wird alles von der Bounding Box entfernt, was "links der Achsengrenze" ist. Mit trim axis right wird aehnliches mit der rechten Seite gemacht. Damit kauft man sich die Schwierigkeit, dass links und rechts "unkontrolliert" Platz entsteht; das bild also ueberlapps mit dem umgebenden Platz erzeugt. Dafuer ist es auf jeden Fall zentriert.
Die Option "baseline" sorgt fuer die Korrekte vertikale Ausrichtung.
Der Witz: beides funktioniert _auch_ mit externalize! Die Bounding boxen werden beruecksichtigt, obwohl das externalisierte pdf "ganz normal" ist. Die Magie ist, dass diese Bounding box modifikationen bzw. vspaces in die .dpth des Bildes geschrieben werden.
Wenn man nun \pgfincludeexternalgraphics{P-figure0} macht, wird das Bild eingelesen und diese Bounding box modifikation / vspaces werden nachtraeglich angewandt. Das makro ist dasselbe, was tikz intern verwendet (und muss noch oeffentlich dokumentiert werden).
Die Ausfuehrung obigen Beispiels zeigt, dass so das externe Bild problemlos wieder eingelesen werden kann - etwas, was includegraphics so nicht kann.
Damit kann man auch alignment basierend auf solchen Bilderen machen. Du musst lediglich die .dpth Datei zusammen mit dem externalisierten pdf mitliefern.
Das "optimize command away" ist noetig, damit "external" waehrend des externalisierungsprozesses nicht versucht, "sich selber" zu inkludieren.
Mit liebem Gruss
Christian[/code]
verstehe ich es richtig, dass Du in einem ersten Schritt Bilder externalisierst, und diese dann an _mehreren_ Stellen wieder mittels \includegraphics einbindest?
Pgfplots kommt von Haus aus mit einigen Tips zum automatischen Alignment. Einer dieser Ansaetze funktioniert auch gut mit externalization: trim axis left/trim axis right/baseline. Wie mir aufgefallen ist, fehlt zu Deinem Anwendungsfall lediglich die Dokumentation fuer ein spezialisiertes includegraphics makro.
Doch zunaechst der code:
\documentclass{article} \usepackage{pgfplots} \pgfplotsset{compat=1.11} \usetikzlibrary{external} \tikzexternalize[ optimize command away=\pgfincludeexternalgraphics, ] \begin{document} \section{externalized} Here is some text \begin{tikzpicture}[trim axis left,trim axis right, baseline] \begin{axis}[xlabel=some x label, ylabel=some y label, legend entries=X, legend pos=outer north east,anchor=origin] \addplot {x}; \end{axis} \end{tikzpicture}% after the figure is some text as well. \section{With includegraphics} Here is some text \includegraphics{P-figure0.pdf}% after the figure is some text as well. \section{pgfincludeexternalgraphics} Here is some text \pgfincludeexternalgraphics{P-figure0}% after the figure is some text as well. \end{document}
Durch die Angabe von trim axis left wird alles von der Bounding Box entfernt, was "links der Achsengrenze" ist. Mit trim axis right wird aehnliches mit der rechten Seite gemacht. Damit kauft man sich die Schwierigkeit, dass links und rechts "unkontrolliert" Platz entsteht; das bild also ueberlapps mit dem umgebenden Platz erzeugt. Dafuer ist es auf jeden Fall zentriert.
Die Option "baseline" sorgt fuer die Korrekte vertikale Ausrichtung.
Der Witz: beides funktioniert _auch_ mit externalize! Die Bounding boxen werden beruecksichtigt, obwohl das externalisierte pdf "ganz normal" ist. Die Magie ist, dass diese Bounding box modifikationen bzw. vspaces in die .dpth des Bildes geschrieben werden.
Wenn man nun \pgfincludeexternalgraphics{P-figure0} macht, wird das Bild eingelesen und diese Bounding box modifikation / vspaces werden nachtraeglich angewandt. Das makro ist dasselbe, was tikz intern verwendet (und muss noch oeffentlich dokumentiert werden).
Die Ausfuehrung obigen Beispiels zeigt, dass so das externe Bild problemlos wieder eingelesen werden kann - etwas, was includegraphics so nicht kann.
Damit kann man auch alignment basierend auf solchen Bilderen machen. Du musst lediglich die .dpth Datei zusammen mit dem externalisierten pdf mitliefern.
Das "optimize command away" ist noetig, damit "external" waehrend des externalisierungsprozesses nicht versucht, "sich selber" zu inkludieren.
Mit liebem Gruss
Christian[/code]
Danke dir Christian, du hast verstanden was ich meine.
Nur ist bei mir noch folgendes anders. Ich habe in meinem Ordner die .tex-Datei in der ich meine Arbeit schreibe. In einem Unterordner (Grafiken) habe ich eine weitere .tex-Datei, in der ich nur meine Grafiken (pgfplots) erstelle.
Jetzt sieht die .tex-Hauptdatei bei mir so aus:
und eine .tex-Bilderdatei in einem Unterverzeichnis so:
Diese "Unterdatei" wird natürlich mit -shell-escape kompiliert.
Leider hat aber meine Hauptdatei nach dem Kompilieren noch nicht das gewünschte aussehen. Siehe Anhang
Viele Grüße
Flo Rida
edit: Anhang lädt er leider nicht hoch
Nur ist bei mir noch folgendes anders. Ich habe in meinem Ordner die .tex-Datei in der ich meine Arbeit schreibe. In einem Unterordner (Grafiken) habe ich eine weitere .tex-Datei, in der ich nur meine Grafiken (pgfplots) erstelle.
Jetzt sieht die .tex-Hauptdatei bei mir so aus:
\documentclass{article} \usepackage{pgfplots} \begin{document} \section{With includegraphics} \includegraphics[width=\linewidth]{Grafiken/section1-Grafiken-figure0.pdf} \includegraphics[width=\linewidth]{Grafiken/section1-Grafiken-figure1.pdf} \section{pgfincludeexternalgraphics} \pgfincludeexternalgraphics{Grafiken/section1-Grafiken-figure0} \pgfincludeexternalgraphics{Grafiken/section1-Grafiken-figure1} \end{document}
\documentclass{article} \usepackage{pgfplots} \pgfplotsset{compat=newest} \usetikzlibrary{external} \tikzexternalize \begin{document} \begin{tikzpicture}[trim axis left,trim axis right, baseline] \begin{axis}[xlabel=some x label, ylabel=some y label, legend entries=X, legend pos=outer north east,anchor=origin] \addplot {x}; \end{axis} \end{tikzpicture} \begin{tikzpicture}[trim axis left,trim axis right, baseline] \begin{axis}[xlabel=some x label, ylabel=some y label, legend entries=Y, legend pos=outer north east,anchor=origin,scaled y ticks=manual:{}{\pgfmathparse{#1/10e-4}}] \addplot coordinates{ (-50,-100) (-10,-60) (-2,15) (12,96) (32,112) }; \end{axis} \end{tikzpicture} \end{document}
Leider hat aber meine Hauptdatei nach dem Kompilieren noch nicht das gewünschte aussehen. Siehe Anhang
Viele Grüße
Flo Rida
edit: Anhang lädt er leider nicht hoch
- Johannes_B
- Moderator
- Beiträge: 5079
- Registriert: Do 1. Nov 2012, 14:55
- Kontaktdaten:
Dateianhänge sind hier seit einigen Jahren defekt.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
-
- Forum-Fortgeschrittener
- Beiträge: 91
- Registriert: Mi 5. Okt 2011, 18:24
- Wohnort: Rheinbach
Hi,
jetzt sehe ich auch, wie Du das im Produktivbetrieb einsetzt!
Es scheint, als ob hier eine Schwaeche (Fehler?) in dem von mir vorgeschlagenenen \pgfincludeexternalgraphics drin ist... scheinbar braucht der den "horizontalmodus", den man u.a. mit \noindent einleiten kann. Jedenfalls geht folgendes:
Ich werde mal schauen, ob man dieses fehlende Ding direkt in die external lib einbinden kann.
Hier noch eine Bemerkung, die ueber die eigentliche Frage hinaus geht: vielleicht kannst Du den ein- oder anderen Arbeitsablauf optimieren, indem Du spezifische Staerken von Paketen dediziert ausnutzt. Dazu schreibe ich ein bisschen; wenn Du das schon kennst oder es nicht anwendbar ist, dann ignoriere es einfach:
Die external lib ist dafuer optimiert, dass es im Grunde ein Hauptdokument gibt, dass alle Grafiken direkt einbindet. Die lib sorgt dafuer, dass diese Einbindung durch entsprechende includegraphics statements schneller ist und nur dann neu errechnet wird, wenn sich auch was geaendert hat. Das klappt inklusive anfaenglicher einmaliger Externalisierung normalerweise sehr gut.
Dein Ansatz der Art "ich wuerde gerne manuell die Bilder externalisieren und die Abhaengigkeiten aufloesen" geht wie in unseren thread hier auch; wird aber u.U. von dem Paket "standalone" besser addressiert.
In 'standalone' wird _jedes_ Bild in eine separate .tex Datei geschrieben, die \documentclass{standalone} besitzt. Genaueres findet sich in der Doku von standalone. Diese separaten PDFs kann man leicht und isoliert weitergeben/weiterbenutzen und kann sie auch in das Hauptdokument einbinden. Zugegebenermassen wird trim axis left und baseline damit vermutlich schwieriger; ich weiss nicht, ob es diesen oder vergleichbaren support gibt.
Aber vielleicht ist die Bemerkung ja fuer den ein- oder anderen Anwendungsfall hilfreich.
Mit liebem Gruss
Christian
jetzt sehe ich auch, wie Du das im Produktivbetrieb einsetzt!
Es scheint, als ob hier eine Schwaeche (Fehler?) in dem von mir vorgeschlagenenen \pgfincludeexternalgraphics drin ist... scheinbar braucht der den "horizontalmodus", den man u.a. mit \noindent einleiten kann. Jedenfalls geht folgendes:
\documentclass{article} \usepackage{pgfplots} \begin{document} \section{With includegraphics} \includegraphics[width=\linewidth]{Grafiken/section1-Grafiken-figure0.pdf} \includegraphics[width=\linewidth]{Grafiken/section1-Grafiken-figure1.pdf} \section{pgfincludeexternalgraphics} \noindent \pgfincludeexternalgraphics{Grafiken/section1-Grafiken-figure0} \noindent \pgfincludeexternalgraphics{Grafiken/section1-Grafiken-figure1} \end{document}
Hier noch eine Bemerkung, die ueber die eigentliche Frage hinaus geht: vielleicht kannst Du den ein- oder anderen Arbeitsablauf optimieren, indem Du spezifische Staerken von Paketen dediziert ausnutzt. Dazu schreibe ich ein bisschen; wenn Du das schon kennst oder es nicht anwendbar ist, dann ignoriere es einfach:
Die external lib ist dafuer optimiert, dass es im Grunde ein Hauptdokument gibt, dass alle Grafiken direkt einbindet. Die lib sorgt dafuer, dass diese Einbindung durch entsprechende includegraphics statements schneller ist und nur dann neu errechnet wird, wenn sich auch was geaendert hat. Das klappt inklusive anfaenglicher einmaliger Externalisierung normalerweise sehr gut.
Dein Ansatz der Art "ich wuerde gerne manuell die Bilder externalisieren und die Abhaengigkeiten aufloesen" geht wie in unseren thread hier auch; wird aber u.U. von dem Paket "standalone" besser addressiert.
In 'standalone' wird _jedes_ Bild in eine separate .tex Datei geschrieben, die \documentclass{standalone} besitzt. Genaueres findet sich in der Doku von standalone. Diese separaten PDFs kann man leicht und isoliert weitergeben/weiterbenutzen und kann sie auch in das Hauptdokument einbinden. Zugegebenermassen wird trim axis left und baseline damit vermutlich schwieriger; ich weiss nicht, ob es diesen oder vergleichbaren support gibt.
Aber vielleicht ist die Bemerkung ja fuer den ein- oder anderen Anwendungsfall hilfreich.
Mit liebem Gruss
Christian