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, \draw
aber 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}
Antwort1
Wir name
können dies tun axis
, um auch außerhalb der axis
Umgebung darauf zugreifen zu können.
Dann ziehen wir eine Linie zwischen einigen Schlüsselpunkten.
Die Ausgabe
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 cs
wie axis description cs
in den Kommentaren vorgeschlagen.
axis description cs
Sie 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}
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.