Mit der Antwort auf Wie kann ich in pgfplots zusätzliche Achsen einzeichnen? kann ich in einem Diagramm einfach Hilfslinien durch den Koordinatenursprung zeichnen. Mitunter benötige ich aber horizontale oder vertikale Linien an anderen Stellen. In der folgenden Zeichnung hätte ich zum Beispiel gern statt der grünen Achsen eine Hilfslinie bei x=10 und eine bei y=0.2. Geht das ähnlich einfach?

Open in writeLaTeX
\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}

\pgfplotsset{
  compat=1.9, % bei Nutzung mit writeLaTeX auskommentieren
  samples=200
}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[domain=-15:35,enlarge x limits=false,
    xlabel=$x$,ylabel=$y$]
% zusätzliche Koordinatenachsen durch Ursprung
    \begin{scope}[green,-stealth]
      \draw (current axis.below origin) -- (current axis.above origin);
      \draw (current axis.left of origin) -- (current axis.right of origin);
    \end{scope}
% eigentlicher Plot
    \addplot[blue] {sin(deg(x-10))/(x-10)+0.2};
  \end{axis}
\end{tikzpicture}
\end{document}

alt text

gefragt 01 Feb '14, 20:06

welle's gravatar image

welle
106222631
Akzeptiert-Rate: 0%

bearbeitet 02 Feb '14, 00:52


Der einfachste Weg, den ich kenne um dies zu erreichen, ist die Benutzung einer Mischung von relativen und absoluten Axen-Koordinaten über die Kommandos rel axis cs und axis cs. Zum Beispiel ist (axis cs:0,0) der Punkt bei dem innerhalb des Plots x=0 und y=0 sind, während (rel axis cs:0,0) immer die linke untere Ecke des Plots markiert, also den Beginn der x-Achse und den Beginn der y-Achse (bei rel axis cs sind logischerweise nur Werte zwischen 0 und 1 für die Koordinaten zulässig). Ausführliche Infos und Beispiele sind in der Dokumentation von pgfplots zu finden.

Hilfslinien bei x=10 und y=0.2 in einem Plot kann man folgendermaßen erhalten:

Open in writeLaTeX
\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}

\pgfplotsset{
  compat=1.9, % bei Nutzung mit writeLaTeX auskommentieren
  samples=200
}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[domain=-15:35,enlarge x limits=false,
    xlabel=$x$,ylabel=$y$]
% Hilfslinien
    \begin{scope}[green]
      \draw[green] ({axis cs:10,0}|-{rel axis cs:0,1}) -- ({axis cs:10,0}|-{rel axis cs:0,0});
      \draw[green] ({rel axis cs:1,0}|-{axis cs:0,0.2}) -- ({rel axis cs:0,0}|-{axis cs:0,0.2});
    \end{scope}
% eigentlicher Plot
    \addplot[blue] {sin(deg(x-10))/(x-10)+0.2};
  \end{axis}
\end{tikzpicture}
\end{document}

Dabei macht man sich die |- Syntax von TikZ zunutze, z.B. ist ( {0,0} |- {0,1} ) der Schnittpunkt zwischen einer vertikalen Linie durch {0,0} und einer horizontal Linie durch {0,1}.

Permanenter link

beantwortet 02 Feb '14, 00:41

carlton87's gravatar image

carlton87
2541711
Akzeptiert-Rate: 66%

bearbeitet 02 Feb '14, 18:39

2

Alternativ zu den relativen Achsenangaben kann man auch passende Anker der Node current axis wählen, also zum Beispiel:

Open in writeLaTeX

\draw[green] ({axis cs:10,0}|-current axis.south) -- ({axis cs:10,0}|-current axis.north);

(02 Feb '14, 01:00) esdd

@esdd Danke für den Hinweis.

(02 Feb '14, 01:07) carlton87
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:

×296

gestellte Frage: 01 Feb '14, 20:06

Frage wurde gesehen: 17,220 Mal

zuletzt geändert: 02 Feb '14, 18:39