使边框颜色取决于 pgfplots 中的位置

使边框颜色取决于 pgfplots 中的位置

我有下图: 在此处输入图片描述

我想让边框的颜色取决于位置。具体来说,对于 x < 5,顶部三角形的边框应为黑色,对于 x >= 5,边框应为红色。最后我希望它看起来像这样:

在此处输入图片描述

当然,黑线来自 Paint。这些图片是用以下代码制作的:

\documentclass{report}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
   \begin{axis}[
      xmin=-10,
      xmax=10,
      ymin=-10,
      ymax=10,
   ]

   \addplot[fill=lightgray, draw=red]
   table[row sep=crcr] {
   x    y\\
   -8 5\\
   9 9\\
   3 -7\\
   }--cycle;

   \addplot[fill=lightgray, draw=black]
   table[row sep=crcr] {
   x    y\\
   -9 -9\\
   9 -9\\
   0 -7\\
   }--cycle;
   \end{axis}
\end{tikzpicture}
\end{document}

我的实际图形是来自 matlab2tikz 的轮廓图,代码太长,无法在此处发布。有没有一种使用 pgfplots 的简单方法可以做到这一点?

答案1

使用 PGFPlots 库可以很容易地完成此操作fillbetween。(在PGFPlots 手册第 432 页第 5.7.3 节(v1.14)

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
    \usetikzlibrary{
        pgfplots.fillbetween,
    }
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            xmin=-10,
            xmax=10,
            ymin=-10,
            ymax=10,
        ]
            \addplot[
                fill=lightgray,
                postaction={
                    decorate,
                    draw=red,
                    very thick,
                },
                decoration={
                    soft clip,
                    soft clip path={
                        domain=5:\pgfkeysvalueof{/pgfplots/xmax},
                    },
                },
            ] table {
                x   y
                -8  5
                9   9
                3   -7
            } --cycle;

            \addplot[
                fill=lightgray,
                draw=black,
            ] table {
                x   y
                -9  -9
                9   -9
                0   -7
            } --cycle;
        \end{axis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容