
다음과 같이 TikZ에서 10x10 그리드를 그리려고 합니다.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=1]
\foreach \y in {0.05,0.15,...,0.95}
\foreach \x in {0.05,0.15,...,0.95}
\pgfmathparse{0.9*rnd+0.3}
\definecolor{MyColor}{rgb}{\pgfmathresult,\pgfmathresult,\pgfmathresult}
\node[fill=MyColor,minimum size=0.1] at (\x,\y) {};
\draw[step=.1,help lines] (0,0) grid (1,1);
\draw[->] (0,1) -- (1.2,1);
\draw[->] (0,1) -- (0,-0.2);
\end{tikzpicture}
\end{document}
이미 내가 생각했던 것과 매우 가깝지만 노드가 제대로 정렬되지 않았습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 내 출력 이미지는 다음과 같습니다.
.
또한 저는 TikZ를 처음 사용하기 때문에 가독성, 코딩 방법 등에 관해 코드에 대해 자유롭게 의견을 제시해 주세요.
답변1
이 기능을 항상 사용해서는 안 됩니다 node
. 때로는 노드의 좌표가 필요하지만, 그렇지 않은 경우 "수동으로"(적은 코드) 비용을 지불할 수 있습니다.
나는 여기에 2가지 방법을 컴파일했습니다. 하나는 귀하의 방법을 수정한 것이고 다른 하나는 nodes
. 저는 노드가 없는 쪽이 그리기가 더 깔끔해서 더 선호하지만, 누구나 원하는 스타일을 선호할 수 있어요!
없이node
\begin{tikzpicture}[scale=1]
\foreach \y in {0.0,0.1,...,0.9} {
\foreach \x in {0.0,0.1,...,0.9} {
\pgfmathparse{0.9*rnd+0.3}
\definecolor{MyColor}{rgb}{\pgfmathresult,\pgfmathresult,\pgfmathresult}
\path[fill=MyColor] (\x,\y) rectangle ++(0.1,0.1);
}
}
\draw[step=.1,help lines] (0,0) grid (1,1);
\draw[->] (0,1) -- (1.2,1);
\draw[->] (0,1) -- (0,-0.2);
\end{tikzpicture}
보시다시피 직사각형을 그리고 원하는 색상으로 채우면 됩니다.
고정코드
확인해야 할 것은 올바른 배치와 올바른 크기입니다. A에는 node
일반적으로 텍스트 채우기와 관련된 공간이 있습니다. 이 공간은 텍스트에 비해 그림이 너무 빡빡하지 않도록 하기 위한 것입니다. 다음 두 tikz
그림을 비교해 보세요.
\tikz \node[draw,inner sep=0pt,outer sep=0pt] {H};
\tikz \node[draw] {H};
그러므로 나는 당신이 어떤 것도 원하지 않는다고 덧붙였 outer sep
지만 inner sep
당신의 노드 크기를 가진 것을 유지했습니다. 다음은 node
크기에 따라 배치하는 능력입니다 . 여기 anchor
당신의 친구가 있습니다. 기본적으로 노드가 노드 내의 좌표에 노드를 고정하는 좌표에 배치되어야 하는지 알려줍니다. 예를 들어 시도해 anchor=center
보고 anchor=east
. 이를 통해 anchor=center
노드의 중심 좌표를 가져와 지정한 좌표에 배치합니다. 이를 사용 anchor=east
하여 노드의 동쪽 지점을 가져와 좌표에 배치합니다. 아래 예에서는 꼭 필요한 것은 아니지만 그것이 무엇을 하는지에 대한 좋은 아이디어를 제공합니다.매우유용한)
\begin{tikzpicture}[scale=1]
\foreach \y in {0.1,0.2,...,.9} {
\foreach \x in {0.1,0.2,...,.9} {
\pgfmathparse{0.9*rnd+0.3}
\definecolor{MyColor}{rgb}{\pgfmathresult,\pgfmathresult,\pgfmathresult}
\node[fill=MyColor,inner sep=0.1cm,outer sep=0pt,anchor=center] at (\x,\y) {};
}
}
\draw[step=.1,help lines] (0,0) grid (1,1);
\draw[->] (0,1) -- (1.2,1);
\draw[->] (0,1) -- (0,-0.2);
\end{tikzpicture}
이것이 당신을 올바른 방향으로 이끌기를 바랍니다.
색상tikz
또한 새 색상을 정의할 때 색상 정의 단계를 건너뛸 수 있습니다.
\pgfmathparse{70*rnd+30}
\edef\tmp{\pgfmathresult}
\node[fill=white!\tmp!black] ...
이 경우에는 을 건너뛰 \definecolor
므로 걱정할 필요가 없습니다. 이 경우 숫자는 0에서 100 사이여야 합니다. 더 나아가 \edef
해당 결과를 유지하는 단계가 필요합니다. 많은 수학 작업이 진행 중이므로 tikz
수학 변수를 임시로 저장해야 합니다(그래서 \edef
필요한 것입니다.)