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, 14:06

welle's gravatar image

welle
10642431
Akzeptiert: 100%

bearbeitet 01 Feb '14, 18: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 01 Feb '14, 18:41

carlton87's gravatar image

carlton87
2541411

bearbeitet 02 Feb '14, 12: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);
(01 Feb '14, 19:00) esdd

@esdd Danke für den Hinweis.

(01 Feb '14, 19:07) carlton87
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×160

Frage gestellt: 01 Feb '14, 14:06

Frage wurde angeschaut: 6,128 Mal

Zuletzt aktualisiert: 02 Feb '14, 12:39