我想在tikz
/中pgfplots
使用多个\addplot table
命令创建一个图。每个表都是模拟的结果。我需要在每个模拟结果周围添加一个框或填充图覆盖的区域。我该怎么做?
我不能使用图的起点和终点坐标(以便在它们周围拟合节点),因为起点和终点可以位于结果覆盖区域内的任何位置。
下面是一个可以说明我的情节类型的 mwe:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates{
(0,0)
(2,1)
(1,1)
(2,2)
(0,2)
};
\addplot coordinates{
(3,3)
(5,4)
(4,4)
(5,5)
(3,5)
};
\end{axis}
\end{tikzpicture}
\end{document}
现在我需要在每个图周围添加一个框(或填充背景)。同样,使用节点来拟合图的起点和终点是行不通的,因为起点和终点没有定义包围图的矩形。使用现实世界数据时,这些图彼此不会如此相似。
答案1
您可以使用\pgf@pathminx
和\pgf@pathmaxy
命令(保存当前路径的最小和最大 x 和 y 坐标)在绘图周围绘制一个矩形。这是一个\drawplotbox
可以在命令末尾调用的宏\addplot
。框的样式由名为 的键控制plot box
,可以使用 来设置框的填充plot box padding
:
\documentclass{standalone}
\usepackage{tikz,pgfplots}
\makeatletter
\newcommand{\drawplotbox}{
(\pgf@pathminx,\pgf@pathminy) coordinate (current plot south west)
(\pgf@pathmaxx,\pgf@pathmaxy) coordinate (current plot north east);
\draw [plot box] ([shift={(-135:1.41*\pgfkeysvalueof{/tikz/plot box padding})}]current plot south west) rectangle ([shift={(45:1.41*\pgfkeysvalueof{/tikz/plot box padding})}]current plot north east);
}
\tikzset{
plot box/.style={
thick, rounded corners, orange
},
plot box padding/.initial=5pt
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot coordinates{
(0,0)
(2,1)
(1,1)
(2,2)
(0,2)
} \drawplotbox;
\addplot +[plot box/.append style=black, plot box padding=10pt] coordinates{
(3,3)
(5,4)
(4,4)
(5,5)
(3,5)
} \drawplotbox;
\end{axis}
\end{tikzpicture}
\end{document}