我想让边框的颜色取决于位置。具体来说,对于 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}