我有一個相當標準的 tikz 情節。為了澄清 y 軸上的低值實際上更快/更好,我想在實際繪圖區域之外繪製一個附加箭頭,如附件所示。我發現了各種繪圖方法\draw
,但它們都只能在繪圖的內容區域內操作 - 我如何在該區域之外繪圖?
以下是我目前如何創建情節的 MWE:
\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}
答案1
我們name
,axis
以便能夠在axis
環境之外存取它。
然後,我們在它的一些關鍵點之間畫一條線。
輸出
程式碼
\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}
乾杯,
答案2
編輯:更改rel axis cs
為axis description cs
評論中的建議。
您可以將axis description cs
座標系用於類似這樣的事情:
\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}
該點(axis description cs:0, 1)
是左上點,(axis description cs:0, 0)
是左下點。兩個點都移動2cm
(任意,根據您的口味選擇)。請注意,您必須關閉axis
環境中的剪切,否則在軸外繪製的所有內容都將不可見。
我總有種感覺,這樣的事情可以更好地解決。在我看來,你應該始終選擇你想要展示的單位和東西來反映你的觀點。在這種情況下,也許可以使用時間的倒數(也許是頻率)來繪製數據?我不知道你在展示什麼,但請記住,(在我看來)解決問題最好不是透過聰明的技術/文字技巧(添加自訂註釋),而是使用正確的視覺化方法。