试着思考这个问题函数的交点或多边形 tikz? 我终于找到了我长期存在的问题 - 如何正确裁剪和填充区域?使用 tkz-fct MWE:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[scale=0.7]
\tkzInit[xmin=-1,xmax=20,ymin=-1,ymax=20]
\tkzAxeXY
\tkzGrid
\tkzFct[thick, red, domain=-1:20]{29-6*\x}
\tkzFct[thick, green, domain=-1:20]{4.8-0.2*\x}
\tkzFct[thick, blue, domain=-1:6]{(16-4*\x)/2}
\clip (1.5,20) -- (4.2,3.9) -- (20,0.8) -- (20,20)-- cycle;
\fill[blue!20,fill opacity=.7] (1.5,0) rectangle (20,20);
%\clip (0,8) -- (4,0) -- (4.8,0) -- (1.5,20) -- (0,20)-- cycle;
%\fill[red!20,fill opacity=.7] (0,0) rectangle (5,20);
%\clip (4,0) --(1.8,4.45) -- (20,0.8)-- (20,0) -- cycle;
%\fill[green!20,fill opacity=.7] (1.8,0) rectangle (20,20);
\end{tikzpicture}
\end{document}
答案1
A\clip
会影响其之后的所有事物,为了限制其影响,请将其scope
与应被剪裁的事物一起放置在环境中。
在这种情况下,填充将部分覆盖绘制的线条,要解决这个问题,只需将\tkzFct
线条移动到图表的末尾。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{tkz-fct}
\begin{document}
\begin{tikzpicture}[scale=0.7]
\tkzInit[xmin=-1,xmax=20,ymin=-1,ymax=20]
\tkzAxeXY
\tkzGrid
\begin{scope}
\clip (1.5,20) -- (4.2,3.9) -- (20,0.8) -- (20,20)-- cycle;
\fill[blue!20,fill opacity=.7] (1.5,0) rectangle (20,20);
\end{scope}
\begin{scope}
\clip (0,8) -- (4,0) -- (4.8,0) -- (1.5,20) -- (0,20)-- cycle;
\fill[red!20,fill opacity=.7] (0,0) rectangle (5,20);
\end{scope}
\begin{scope}
\clip (4,0) --(1.8,4.45) -- (20,0.8)-- (20,0) -- cycle;
\fill[green!20,fill opacity=.7] (1.8,0) rectangle (20,20);
\end{scope}
\tkzFct[thick, red, domain=-1:20]{29-6*\x}
\tkzFct[thick, green, domain=-1:20]{4.8-0.2*\x}
\tkzFct[thick, blue, domain=-1:6]{(16-4*\x)/2}
\end{tikzpicture}
\end{document}