是否可以在 (2,2) (4,3) 之间绘制粗曲线。其余部分必须较细。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [blue] plot [smooth] coordinates {(0,0) (2,2) (4,3) (5,5) (0,10)};
\end{tikzpicture}
\end{document}
答案1
1)
clip
这是针对您的特定 MWE 的简单解决方案(通过操作)。
\documentclass{standalone}
\usepackage{tikz}
\def\mycoordinates{(0,0) (2,2) (4,3) (5,5) (0,10)}
\begin{document}
\begin{tikzpicture}
\draw [blue,thin] plot [smooth] coordinates {\mycoordinates};
\begin{scope}
\clip (0,2) rectangle (5,3);
\draw [red,very thick] plot [smooth] coordinates {\mycoordinates};
\end{scope}
\end{tikzpicture}
\end{document}
2)
以下是更通用的解决方案(通过show path construction
装饰)。
该style between
样式需要三个参数:{<坐标#1>}{<坐标#2>}{<特殊风格>}。 这特殊风格应用于之间的段坐标#1和坐标#2。
\documentclass{standalone}
\usepackage{tikz}
\usepackage{ifthen}
\usetikzlibrary{decorations.pathreplacing,decorations.markings}
\newcounter{pos}
\tikzset{
initcounter/.code={\setcounter{pos}{0}},
style between/.style n args={3}{
postaction={
initcounter,
decorate,
decoration={
show path construction,
curveto code={
\addtocounter{pos}{1}
\pgfmathtruncatemacro{\min}{#1 - 1}
\ifthenelse{\thepos < #2 \AND \thepos > \min}{
\draw[#3]
(\tikzinputsegmentfirst)
..
controls (\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb)
..
(\tikzinputsegmentlast);
}{}
}
}
},
},
}
\begin{document}
\begin{tikzpicture}
\draw [
style between={2}{4}{red,thick},
style between={5}{8}{green,very thick},
blue,thin] plot [smooth]
coordinates {(0,0) (4,0) (2,4) (1,1) (3,1) (1,3) (0,1) (1,0) (4,4)};
\end{tikzpicture}
\end{document}