在 tikz/pgfplots 中围绕绘图绘制框或填充绘图区域

在 tikz/pgfplots 中围绕绘图绘制框或填充绘图区域

我想在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}

相关内容