我感兴趣的是绘制(我怀疑使用 pgf/tikz 是实现这一点的最简单的方法之一)如下图所示的图片
它应该是平面的一个网格(我只关心具有自然坐标的点),其中有一些“红色袋子”包含其中一些点,并且有一个区域被涂成黄色(其中一个红色袋子与黄色区域中的点完全对应)。
关于如何使用 pgf/tikz 绘制这样的图像,您有什么想法吗?
答案1
我只是将@Jake 的评论扩展为答案。
\documentclass[border=.1cm]{standalone} %change to article or whatever...
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\fill [green!80!blue] (3.5,0) -- (3,0) -- (3,1) -- (2,1) -- (2,2) -- (1,2) -- (1,3.5) -- (3.5,3.5) -- cycle;
\draw[thin] (0,0) grid (4.5,4.5);
\draw[brown,ultra thick] (0,0) circle (0.3cm);
\draw [rounded corners=0.2cm,brown,very thick] (1.2,-0.4) -- (1.2,1.3) -- (0.8,1.3) -- (0.8,-0.4) -- cycle;
\draw[brown,ultra thick] (2,0) circle (0.3cm);
\draw [rounded corners=0.2cm,brown,very thick] (0.2,4.3) -- (0.2,0.8) -- (-0.2,0.8) -- (-0.2,4.3);
\foreach \x in {0,1,2,3,4}
\foreach \y in {,0,1,2,3,4}
{
\draw[fill=black] (\x,\y) circle (1pt);
}
% \fill [green!80!blue,opacity=.4] (3.5,0) -- (3,0) -- (3,1) -- (2,1) -- (2,2) -- (1,2) -- (1,3.5) -- (3.5,3.5) -- cycle;
\draw [rounded corners=0.2cm,brown,very thick] (4.3,-0.3) -- (2.8,-0.3) -- (2.8,0.8) -- (1.8,0.8) -- (1.8,1.8) -- (0.8,1.8) -- (0.8,4.3);
\end{tikzpicture}
\end{document}
而不是放
\fill [green!80!blue] (3.5,0) -- (3,0) -- (3,1) -- (2,1) -- (2,2) -- (1,2) -- (1,3.5) -- (3.5,3.5) -- cycle;
一开始你可以把它放在任何地方并使用opacity = .4
(或任何你喜欢的值)作为:
\fill [green!80!blue,opacity=.4] (3.5,0) -- (3,0) -- (3,1) -- (2,1) -- (2,2) -- (1,2) -- (1,3.5) -- (3.5,3.5) -- cycle;
要得到
请注意,我使用了一种非常传统和简单的坐标表示方法。事情可以变得更复杂和更简洁。