Verschiebung anwenden auf (aktuelle Achse.links vom Ursprung)

Verschiebung anwenden auf (aktuelle Achse.links vom Ursprung)

Ich habe versucht, die Lösung zu verbessern beiLinien in einem Diagramm zeichnen und ihnen eine Beschriftung geben?indem Sie Jakes Antwort verwenden unterSo greifen Sie innerhalb der Achsenumgebung von PGFplots auf \xmin, \xmax, \ymin, \ymax zu. Jakes Antwort ergibt also die braune gepunktete Linie (die x-Achse) mit

(current axis.left of origin) -- (current axis.right of origin)

Ich dachte, eine einfache Verwendung tikzder calcBibliothek von würde es mir ermöglichen, die vertikale Position der horizontalen Linie anzupassen. Wenn ich y=12zum Beispiel eine horizontale Linie bei haben möchte, verwende ich einfach

($(current axis.left of origin)+(axis cs: 0,12)$) -- ($(current axis.right of origin)+(axis cs: 0,12)$)

wo ich a angewendet habe + (axis cs: 0,12)und dasselbe für die andere Koordinate.

Nun, das ist in der Theorie großartig, funktioniert aber nicht. Stattdessen wird die gestrichelte Linie in Rot erzeugt (die nur die Hälfte der gewünschten Linie ist):

Bildbeschreibung hier eingeben

Anmerkungen:

  • Anstatt Koordinatenberechnungen durchzuführen, habe ich auch versucht, shift={(axis cs: 0,12)}die Option anzuwenden, aber das hatte keine Auswirkungen auf die Ausgabe.

Code:

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\begin{axis}
    \addplot {x*x};
    
    \draw [ultra thick, dotted, draw=brown] 
        (current axis.left of origin) -- 
        (current axis.right of origin);
        
    \draw [ultra thick, dashed, draw=red] 
        ($(current axis.left of origin) +(axis cs: 0,12)$) -- 
        ($(current axis.right of origin)+(axis cs: 0,12)$);
\end{axis}
\end{tikzpicture}
\end{document}

Antwort1

Ich weiß wirklich nicht warum, aber das funktioniert bei mir

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}

\pgfplotsset{compat=1.10}

\begin{document}
\begin{tikzpicture}
\begin{axis}
    \addplot {x*x};

    \draw [ultra thick, dotted, draw=brown] 
        (current axis.left of origin) -- 
        (current axis.right of origin);

    \draw [ultra thick, draw=red] 
        ($(current axis.left of origin)-(axis cs:0,-12)$) -- 
        ($(current axis.right of origin)+(axis cs:0,12)$);
\end{axis}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen