目录
[1. 默认单位:厘米 (cm)](#1. 默认单位:厘米 (cm))
[2. 显式指定其他单位](#2. 显式指定其他单位)
[3. 坐标系、画布与相对单位](#3. 坐标系、画布与相对单位)
[4. 缩放、变换与无单位坐标](#4. 缩放、变换与无单位坐标)
在 TikZ 中,坐标系统的默认单位是 厘米 (cm) 。这意味着,当你指定一个坐标如 (1,2) 时,它默认代表距离原点向右 1 厘米、向上 2 厘米的点 。理解并控制这个单位系统是精确绘图的基础。
1. 默认单位:厘米 (cm)
TikZ 继承自其底层图形系统 PGF,其默认的坐标系是一个标准的笛卡尔坐标系,x 轴向右,y 轴向上,默认长度单位为厘米 。这是最常见的使用场景。
latex
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% 从原点(0,0)画一条到(1,0)的线段。在默认单位下,这是1厘米长的线段。
\draw (0,0) -- (1,0);
% 从(0,0)画一条到(0,2)的线段。这是2厘米长的线段。
\draw (0,0) -- (0,2);
\end{tikzpicture}
\end{document}
2. 显式指定其他单位
虽然默认单位是厘米,但你可以在坐标值后显式地附加其他单位,TikZ 会自动进行换算。这是避免歧义和实现精确控制的关键 。
| 单位 | 描述 | 示例代码 |
|---|---|---|
cm |
厘米(默认) | (1cm, 2cm) |
mm |
毫米 | (10mm, 20mm) |
in |
英寸 | (0.3937in, 0.7874in) |
pt |
点(1/72.27 英寸, LaTeX 标准) | (28.45274pt, 56.9055pt) |
bp |
点(1/72 英寸, PostScript/PDF 标准) | (28.34646bp, 56.6929bp) |
ex |
当前字体中字母"x"的高度 | (2ex, 1ex) |
em |
当前字体中字母"M"的宽度 | (1em, 1.5em) |
latex
\begin{tikzpicture}
% 使用毫米单位绘制一个矩形:宽30mm,高20mm。
\draw (0,0) rectangle (30mm, 20mm);
% 使用点单位绘制一个圆:半径28.35pt(约1cm)。
\draw (50mm, 10mm) circle (28.35pt);
% 使用em单位(相对于字体大小)放置一个节点。
ode at (2em, 1em) {文本标签};
\end{tikzpicture}
3. 坐标系、画布与相对单位
理解 TikZ 的坐标单位,还需结合其画布 (canvas) 和坐标系变换的概念。
-
画布与逻辑坐标 :TikZ 绘制的"画布"本身没有固定的物理尺寸。你定义的坐标点(如
(5,5))会根据其单位(默认 cm)被转换为一个逻辑位置。最终生成的 PDF 或图片的物理尺寸,取决于所有图形元素占据的逻辑空间范围 。 -
相对坐标与增量 :可以使用
++(dx,dy)语法来指定相对于前一个点的坐标,其中的dx和dy同样遵循单位规则 。latex\begin{tikzpicture} \draw (0,0) -- ++(1,0) -- ++(0,1) -- ++(-1,0) -- cycle; % 绘制一个1cm x 1cm的正方形 \end{tikzpicture} -
极坐标 :除了笛卡尔坐标
(x,y),TikZ 还支持极坐标(angle:radius)。这里的radius(半径)同样使用默认的厘米单位或其显式单位 。latex\begin{tikzpicture} % 从原点出发,沿30度方向画一条长2cm的线段 \draw (0,0) -- (30:2cm); \end{tikzpicture}
4. 缩放、变换与无单位坐标
有时,为了图形逻辑的清晰,我们会使用无单位坐标,然后通过整体缩放来控制最终物理尺寸。
-
scale选项 :对整个tikzpicture环境进行缩放,这会作用到所有坐标值上 。latex\begin{tikzpicture}[scale=0.5] % 所有坐标和尺寸缩小为一半 \draw (0,0) -- (2,0); % 逻辑上是从(0,0)到(2,0),但实际绘制为1cm长的线段。 \end{tikzpicture} -
xscale,yscale:可以分别对 x 和 y 方向进行不同比例的缩放 。 -
transform shape:当对节点应用缩放时,通常需要此选项才能使节点内的文本和形状一同缩放 。
一个综合示例:单位使用与缩放对比
latex
\documentclass{article}
\usepackage{tikz}
\begin{document}
% 图1:使用默认cm单位
\begin{tikzpicture}
\draw[step=1cm, gray, very thin] (-0.5,-0.5) grid (2.5,2.5); % 1cm间隔的网格
\draw[thick, ->] (0,0) -- (2.5,0) node[anchor=north west] {x (cm)};
\draw[thick, ->] (0,0) -- (0,2.5) node[anchor=south east] {y (cm)};
\draw[red] (0,0) rectangle (2,1); % 一个2cm宽,1cm高的矩形
ode at (1,0.5) {默认单位 (cm)};
\end{tikzpicture}
% 图2:显式使用mm单位,效果相同
\begin{tikzpicture}
\draw[step=10mm, gray, very thin] (-5mm,-5mm) grid (25mm,25mm);
\draw[thick, ->] (0mm,0mm) -- (25mm,0mm) node[anchor=north west] {x (mm)};
\draw[thick, ->] (0mm,0mm) -- (0mm,25mm) node[anchor=south east] {y (mm)};
\draw[blue] (0mm,0mm) rectangle (20mm,10mm); % 20mm x 10mm 矩形
ode at (10mm,5mm) {显式单位 (mm)};
\end{tikzpicture}
% 图3:使用无单位坐标,然后整体缩放
\begin{tikzpicture}[scale=0.5cm] % 关键:此缩放意味着坐标值1对应0.5cm
% 网格线:逻辑坐标从(-0.5,-0.5)到(2.5,2.5),物理间隔为0.5cm
\draw[step=1, gray, very thin] (-0.5,-0.5) grid (2.5,2.5);
\draw[thick, ->] (0,0) -- (2.5,0) node[anchor=north west] {x (无单位)};
\draw[thick, ->] (0,0) -- (0,2.5) node[anchor=south east] {y (无单位)};
\draw[green] (0,0) rectangle (2,1); % 逻辑尺寸2x1,物理尺寸1cm x 0.5cm
ode at (1,0.5) {无单位 + scale=0.5cm};
\end{tikzpicture}
\end{document}
总结与最佳实践建议:
- 明确性原则 :对于需要精确物理尺寸的图形(如实验装置图、严格按比例的示意图),建议始终显式指定单位 (如
cm,mm),以避免因全局设置改变而产生的意外 。 - 灵活性原则 :对于更关注相对位置和比例的图形(如树状图、流程图),可以使用无单位坐标 ,然后通过调整
[scale=...]选项来快速控制图形在文档中的最终大小,这通常更方便 。 - 一致性原则 :在同一幅图内,尽量保持单位使用的一致性。混合使用单位(如一部分用
cm,一部分用pt)虽然可行,但会降低代码的可读性和可维护性。 - 注意极坐标 :使用极坐标
(angle:radius)时,务必意识到radius参数受单位影响。(30:2)代表2厘米,而(30:20mm)代表20毫米 。