TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

Ich habe zwei pgfplots Diagramme auf einer Seite. Sie stehen jeweils in einer eigenen center Umgebung, da ich zwischen beiden noch ein oder zwei Sätze im Blocksatz einfügen werde.

Für beide Diagramme gebe ich mit width=8cm die gleiche Breite vor. Da die Achsen aber unterschiedlich beschriftet werden, sind die Grafiken am Ende aber doch verschieden breit und erscheinen damit horizontal versetzt. Ich möchte die Koordinatensysteme aber so aneinander ausrichten, dass sie unabhängig von der Achsenbeschriftung untereinander stehen. Wie kann ich das erreichen?

Open in writeLaTeX
\documentclass{scrartcl} 
\usepackage{pgfplots}
%\pgfplotsset{compat=1.9}% bei Nutzung von writeLaTeX auskommentieren
\pgfplotsset{width=8cm,height=6cm}

\begin{document}
\begin{center}
  \begin{tikzpicture}
    \begin{axis}
      \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)};
    \end{axis}
  \end{tikzpicture}
  \captionof{figure}{Abbildung 1}
\end{center}

\begin{center}
  \begin{tikzpicture}
    \begin{axis}[ylabel = {$y(x)$}]
      \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,9.4)};
    \end{axis}
  \end{tikzpicture}
\captionof{figure}{Abbildung 2}
\end{center}
\end{document}

alt text

gefragt 10 Jan '14, 23:26

welle's gravatar image

welle
106102631
Akzeptiert-Rate: 0%

bearbeitet 24 Jan '14, 10:35


Das einfachste scheint mir, beiden {tikzpicture}s die Option trim axis left zu geben:

Open in writeLaTeX
\documentclass{scrartcl} 
\usepackage{pgfplots}
\pgfplotsset{width=8cm,height=6cm}

\begin{document}
\begin{center}
  \begin{tikzpicture}[trim axis left]
    \begin{axis}
      \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)};
    \end{axis}
  \end{tikzpicture}
  \captionof{figure}{Abbildung 1}
  \vspace{2\baselineskip}
  \begin{tikzpicture}[trim axis left]
    \begin{axis}[ylabel = {$y(x)$}]
      \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,9.4)};
    \end{axis}
  \end{tikzpicture}
  \captionof{figure}{Abbildung 2}
\end{center}
\end{document}

alt text

Permanenter link

beantwortet 11 Jan '14, 00:26

Clemens's gravatar image

Clemens
20.7k163463
Akzeptiert-Rate: 61%

bearbeitet 11 Jan '14, 15:48

Neben dem Vorschlag von @Clemens, der laut Dokumentation von pgfplots der einzige ist, mit dem man die Abbildungen auch problemlos externalisieren könnte (mit der externalize Bibliothek), gibt es natürlich noch weitere Möglichkeiten.

Einfach nutzbar ist die overlay Option für ylabel style und yticklabel style:

Open in writeLaTeX
\begin{axis}[...,ylabel style={overlay},yticklabel style={overlay},...]

Als weitere Möglichkeit kann man auch \pgfresetboundingbox verwenden, um die ermittelte Bounding Box zurückzusetzen und eine eigene festzulegen. Dabei bietet es sich an, auf die verschiedenen Anker des erstellten Diagrammes (current axis) zurückzugreifen:

Open in writeLaTeX
\documentclass{scrartcl} 
\usepackage{pgfplots}
\pgfplotsset{width=8cm,height=6cm}

\newcommand\myBoundingBox{
  \pgfresetboundingbox% bisher ermittelte Bounding Box wird zurückgesetzt
  % der folgende Code bestimmt die Bounding Box für die Abbildung
  \path(current axis.below south west)rectangle (current axis.above north east);
}

\begin{document}
\begin{center}
  \begin{tikzpicture}
    \begin{axis}
      \addplot coordinates {(1,6.45)(2,3.4)(3,4.8)(4,4.1)(5,4.4)};
    \end{axis}
    \myBoundingBox
  \end{tikzpicture}
  \captionof{figure}{Abbildung 1}
\end{center}

\begin{center}
  \begin{tikzpicture}
    \begin{axis}[ylabel = {$y(x)$}]
      \addplot coordinates {(1,66.4)(2,43.4)(3,4.8)(4,4.1)(5,9.4)};
    \end{axis}
    \myBoundingBox
  \end{tikzpicture}
\captionof{figure}{Abbildung 2}
\end{center}
\end{document}

Alternativ kann man die axis Umgebung in eine pgfinterruptboundingbox Umgebung setzen und anschließend mit \useasboundingbox - wieder unter Nutzung der Anker des erstellten Diagramms - eine geeignete Bounding Box festlegen.

Open in writeLaTeX
...
\begin{pgfinterruptboundingbox}
  \begin{axis}[...
    ...
  \end{axis}
\end{pgfinterruptboundingbox}
\useasboundingbox(current axis.below south west)rectangle (current axis.above north east);
...

Alle drei Vorschläge bieten für andere Anwendungen auch die Möglichkeit, die Beschriftung der x-Achse aus der Festlegung der Bounding Box auszuschließen.

Permanenter link

beantwortet 11 Jan '14, 17:27

esdd's gravatar image

esdd
15.2k123954
Akzeptiert-Rate: 63%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×273
×61

gestellte Frage: 10 Jan '14, 23:26

Frage wurde gesehen: 9,731 Mal

zuletzt geändert: 24 Jan '14, 10:35