我有一个相当标准的 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
,否则轴外绘制的所有内容都将不可见。
我一直觉得,这样的事情可以得到更好的解决。在我看来,你应该始终选择你的单位和你想要展示的东西来反映你的观点。在这种情况下,也许可以使用时间的倒数(也许是频率)来绘制数据?我不知道你在展示什么,但请记住,(在我看来)最好不要通过巧妙的技术/技巧(添加自定义注释)来解决问题,而要使用正确的可视化方法。