如何在 TikZ 中的圆圈内添加刻度

如何在 TikZ 中的圆圈内添加刻度

提到问题如何在 tikz 中向节点添加勾号,如何将其扩展为circleTikZ 中的形状。

一种简单的方法是通过计算坐标将线绘制为刻度。示例方法如下:

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\node[circle,draw,minimum size=10cm] (a) at (0,0) {};
\filldraw (a.center) circle [radius=0.1cm];
\draw ($(a.center)-(4.5,0)$) -- (a.west);
\draw ($(a.east)-(0.5,0)$) -- (a.east);
\end{tikzpicture}
\end{document} 

在此处输入图片描述

但是,这种方法并不有效,因为必须手动计算刻度长度。

有没有更好的方法来做到这一点(圆圈内的刻度就像闹钟上的线,除了 12、3、6 和 9 个数字外,其他都是倾斜的)。

答案1

使用\foreach极坐标(当然要小心)你可以得到这个

\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}
\node[circle,draw,minimum size=10cm] (a) at (0,0) {};
\filldraw (a.center) circle [radius=0.1cm];
\foreach \i [count=\j] in {60,30,...,-270} {
    \draw (\i:5) -- (\i:4.5);
    \draw (\i:4.2) node[font=\large] {\j};
}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

在此代码中,for 循环遍历集合 {60, 30, 0, −30, −60, −90, −120, −150, −180, −210, −240, −270}。这些数字中的每一个都是“刻度”的角度。我根据这些迭代器使用极坐标,因此“刻度”的角度是准确的。

我为 for 循环设置了一个计数器(\j),以便向图片添加数字。


\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}
\node[circle,draw,minimum size=10cm] (a) at (0,0) {};
\filldraw (a.center) circle [radius=0.1cm];
\foreach \i [count=\j] in {60,30,...,-270} {
    \draw (\i:5) -- (\i:4.5);
    \draw (\i:4.2) node[font=\large] {\j};
}
\foreach \i in {84,78,...,-270} \draw (\i:5) -- (\i:4.8);
\end{tikzpicture}
\end{document} 

在此处输入图片描述

第二个 for 循环是绘制较小的刻度。84、78 等是这些刻度的角度。

答案2

类似这样的事?

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
\node[circle,draw,minimum size=10cm] (a) at (0,0) {};
\filldraw (a.center) circle [radius=0.1cm];
\draw ($(a.center)-(4.5,0)$) -- (a.west);
\draw ($(a.east)-(0.5,0)$) -- (a.east);
\foreach \X in {0,10,...,350}
{\draw (a.\X) -- ++ (\X:0.2);}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

好的,里面。

\documentclass[tikz]{standalone}

\begin{document}
\begin{tikzpicture}
\node[circle,draw,minimum size=10cm] (a) at (0,0) {};
\filldraw (a.center) circle [radius=0.1cm];
\foreach \X in {0,10,...,350}
{\draw (a.\X) -- ++ (180+\X:0.2);}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

\foreach \X in {0,10,...,350}\X在 中循环{0,10,...,350},然后节点具有以度为单位的锚点,因此是 边界上以 为角(a.\X)的点。此语法在 中提到过a\X我之前的回答回答您的一个问题。++ (\X:0.2)在极坐标中添加一些偏移,\X是角度和0.2半径。要使刻度向内,我们需要添加 180 度\X(也可以使用(\X:-0.2))。

只是为了好玩:一块手表。

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[font=\sffamily]
\node[circle,draw,minimum size=10cm] (a) at (0,0) {};
\filldraw (a.center) circle [radius=0.1cm];
\foreach \X in {1,...,12}
{\draw (a.-\X*30+90) -- ++ (270-\X*30:0.3) node[pos=1.5]{\X};}
\end{tikzpicture}
\end{document} 

在此处输入图片描述

相关内容