Zeichnen Sie Pfeile außerhalb des Inhaltsbereichs von TikZ

Zeichnen Sie Pfeile außerhalb des Inhaltsbereichs von TikZ

Ich habe ein eher standardmäßiges Tikz-Diagramm. Um zu verdeutlichen, dass niedrige Werte auf der Y-Achse tatsächlich schneller/besser sind, möchte ich einen zusätzlichen Pfeil außerhalb des eigentlichen Diagrammbereichs zeichnen, wie im Anhang gezeigt. Ich habe verschiedene Zeichenmethoden gefunden, \drawaber sie funktionieren alle nur innerhalb des Inhaltsbereichs des Diagramms – wie kann ich außerhalb dieses Bereichs zeichnen?

Hier ist ein MWE, wie ich derzeit mein Grundstück erstelle:

\documentclass[11pt,a4paper]{article}
\usepackage{pgfplots, pgfplotstable}    
\usepackage{tikz}

\begin{document}
\begin{figure}
\begin{tikzpicture}[scale=0.75]
         \pgfplotsset{grid style={dashed,gray}}
        \begin{axis}[
        xlabel={X}, 
        ylabel=time,
        xmin=0.8,
        xmax=1.0,
        ymin=1,     
        ymax=200,   
        xmajorgrids=true,
        ymajorgrids=true,
    ]      

\addplot+[
            black,
            mark options={fill= black},
            only marks,
            mark size=2,
            mark=square*,
        ] 
        coordinates {
            (0.805, 10)
            (0.85, 20)

        };



    \end{axis}
    \end{tikzpicture}   

\end{figure}

\end{document}

Bildbeschreibung hier eingeben

Antwort1

Wir namekönnen dies tun axis, um auch außerhalb der axisUmgebung darauf zugreifen zu können.

Dann ziehen wir eine Linie zwischen einigen Schlüsselpunkten.

Die Ausgabe

Bildbeschreibung hier eingeben

Der Code

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{arrows}

\begin{document}
\begin{tikzpicture}[scale=0.75, >=stealth']
  \pgfplotsset{grid style={dashed,gray}}
  \begin{axis}
    [
      name=myGraph,
      xlabel={X}, 
      ylabel=time,
      xmin=0.8,
      xmax=1.0,
      ymin=1,     
      ymax=200,   
      xmajorgrids=true,
      ymajorgrids=true,
    ]      

    \addplot+
    [
      black,
      mark options={fill= black},
      only marks,
      mark size=2,
      mark=square*,
    ] 
    coordinates 
    {
      (0.805, 10)
      (0.85, 20)
    };
  \end{axis}

  \def\myShift{-2cm}
  \draw [red, very thick, ->] ([xshift=\myShift]myGraph.north west) -- ([xshift=\myShift]myGraph.south west) node [midway, rotate=90, fill=white, yshift=2pt] {faster} ;
  %\draw [red, very thick, ->] (myGraph.left of north west) -- (myGraph.left of south west) node [midway, rotate=90, fill=white, yshift=2pt] {faster} ; % an alternative way
\end{tikzpicture}
\end{document}

Prost,

Antwort2

BEARBEITEN: Geändert rel axis cswie axis description csin den Kommentaren vorgeschlagen.

axis description csSie können das Koordinatensystem für folgende Dinge verwenden :

\documentclass{article}

\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \begin{axis}
        [
            grid style = {dashed, gray},
            xlabel={X}, 
            ylabel=time,
            xmin=0.8,
            xmax=1.0,
            ymin=1,     
            ymax=200,   
            xmajorgrids=true,
            ymajorgrids=true,
            clip = false % <--- Important
        ]      
        \addplot+
        [
            black,
            mark options={fill= black},
            only marks,
            mark size=2,
            mark=square*,
        ] 
        coordinates { (0.805, 10) (0.85, 20) };
        % add annotation here:
        \draw[red, ->] ([xshift = -2cm] axis description cs:0, 1) -- node[left] { Faster } ([xshift = -2cm] axis description cs:0, 0);
    \end{axis}
\end{tikzpicture}   
\end{document}

Bild der Antwort Der Punkt (axis description cs:0, 1)ist der obere linke Punkt, (axis description cs:0, 0)ist der untere linke Punkt. Beide Punkte sind um 2cm(beliebig, wählen Sie nach Ihrem Geschmack) verschoben. Beachten Sie, dass Sie das Clipping in der Umgebung ausschalten müssen axis, da sonst alle außerhalb der Achse gezeichneten Elemente nicht sichtbar sind.

Ich habe immer das Gefühl, dass solche Dinge besser gelöst werden können. Meiner Meinung nach sollten Sie Ihre Einheiten und die Dinge, die Sie zeigen möchten, immer so wählen, dass sie Ihren Standpunkt widerspiegeln. In diesem Fall wäre es vielleicht möglich, den Kehrwert der Zeit (vielleicht die Frequenz) zu verwenden, um die Daten darzustellen? Ich weiß nicht, was Sie zeigen, aber denken Sie daran, dass es (meiner Meinung nach) besser ist, Dinge nicht durch clevere technische/technische Tricks (Hinzufügen einer benutzerdefinierten Anmerkung) zu lösen, als durch die Verwendung der richtigen Visualisierungsmethode.

verwandte Informationen