$\begin{array}{lcr}
\begin{tikzpicture}
%\filldraw[draw=black,fill=gray!20]
\draw (4,4) circle (1) ;
\draw (7,4) circle (1) ;
\draw (10,4) circle (1) ;
\draw (3,4) -- (5,4) ;
\draw (6,4) -- (8,4) ;
\draw (9,4) -- (11,4);
\draw (3.4,4.8) -- (4.6,4.8);
\draw (3.4,3.2) -- (4.6,3.2);
\draw (6.15,4.5) -- (7.85,4.5);
\draw (6.15,3.5) -- (7.85,3.5);
\draw (9.01,4.2) -- (10.99,4.2);
\draw (9.01,3.8) -- (10.99,3.8);
\end{tikzpicture}\\
\quad n=3 \hspace{2cm} n=11\hspace{2cm} n=101
\end{array}$
我的问题是我想添加如上图所示的灰色。有人可以帮我做到这一点吗?
答案1
我认为下面的代码应该可以解决问题。该clip
选项将绘制的空间缩小到圆的面积。因此,您可以在其上绘制一个矩形,并且只会填充圆内的区域。因此,您也不必计算圆边缘上的线条的精确点。
最后,您需要示波器来重置剪切区域并绘制下一个圆。tikz/pgf 文档非常好,还有很多示例。真的值得一读。
下次,请提供最小工作示例。这对我们帮助您有很大帮助,而且节省了时间。您的代码非常接近它,而且您是新手,所以我还是解决了它。但下一次,人们可能会在回答之前先请求它。
\documentclass{article}
\usepackage{tikz}
\begin{document}
$\begin{array}{lcr}
\begin{tikzpicture}
\begin{scope}
\draw[clip] (4,4) circle (1);
\filldraw[draw=black, gray!20] (3,3.2) rectangle (5,4.8);
\draw (3,4.8) -- (5,4.8);
\draw (3,4) -- (5,4);
\draw (3,3.2) -- (5,3.2);
\end{scope}
\begin{scope}
\draw[clip] (7,4) circle (1);
\filldraw[draw=black, gray!20] (5,4.5) rectangle (8,3.5);
\draw (6,4) -- (8,4);
\draw (6.15,4.5) -- (7.85,4.5);
\draw (6.15,3.5) -- (7.85,3.5);
\end{scope}
\begin{scope}
\draw[clip] (10,4) circle (1) ;
\filldraw[draw=black, gray!20] (8,4.2) rectangle (12,3.8);
\draw (9,4) -- (11,4);
\draw (9.01,4.2) -- (10.99,4.2);
\draw (9.01,3.8) -- (10.99,3.8);
\end{scope}
\end{tikzpicture}\\
\quad n=3 \hspace{2cm} n=11\hspace{2cm} n=101
\end{array}$
\end{document}
答案2
首先,您不应该在数学模式下合并整个图片。将标签对齐到每个圆圈下是一个问题。相反,我会用三个圆圈绘制一幅图,并在它们上绘制标签。除此之外,这是一个与 Dave 所做的类似的解决方案,使用scope
和clip
。在下面有一个命令接受一些输入,其中标签是可选的。否则x
和y
是中心和partgray
一个介于 0 和 1 之间的数字,指定彩色部分的高度。为了好玩,您还可以设置半径和颜色。
\documentclass{article}
\usepackage{tikz}
\newcommand\partgraycirc[6][]{% [label]{x}{y}{radius}{partgray}{color}
\begin{scope}
\clip (#2,#3) circle (#4);
\fill[#6] (#2-#4,#3-#4*#5) rectangle +(2*#4,2*#5*#4);
\end{scope}
\draw (#2,#3) circle (#4);
\node[below] at (#2,#3-#4) {#1};
}
\begin{document}
\begin{tikzpicture}
\partgraycirc[$d=3$]{1}{1}{1.5}{0.9}{red!40}
\partgraycirc[$d=11$]{3.5}{1}{0.5}{0.5}{green!40}
\partgraycirc[$d=101$]{6}{1}{1}{0.1}{blue!40}
\end{tikzpicture}
\end{document}