TikZ坐标单位详解

目录

[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) 语法来指定相对于前一个点的坐标,其中的 dxdy 同样遵循单位规则 。

    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}

总结与最佳实践建议

  1. 明确性原则 :对于需要精确物理尺寸的图形(如实验装置图、严格按比例的示意图),建议始终显式指定单位 (如 cm, mm),以避免因全局设置改变而产生的意外 。
  2. 灵活性原则 :对于更关注相对位置和比例的图形(如树状图、流程图),可以使用无单位坐标 ,然后通过调整 [scale=...] 选项来快速控制图形在文档中的最终大小,这通常更方便 。
  3. 一致性原则 :在同一幅图内,尽量保持单位使用的一致性。混合使用单位(如一部分用 cm,一部分用 pt)虽然可行,但会降低代码的可读性和可维护性。
  4. 注意极坐标 :使用极坐标 (angle:radius) 时,务必意识到 radius 参数受单位影响。(30:2) 代表2厘米,而 (30:20mm) 代表20毫米 。

参考来源

相关推荐
basketball6161 天前
Latex常用符号表示方法
latex
secondyoung4 天前
Markdown数学公式语法速查手册
算法·编辑器·markdown·latex
喝凉白开都长肉的大胖子6 天前
latex 中改变其中一部分文本颜色
latex
迷路爸爸1809 天前
VSCode / Cursor 中 LaTeX Workshop 的 settings.json 配置:编译与 SyncTeX 跳转
ide·vscode·json·latex
weixin_4166600710 天前
豆包公式转Word,乱码解决
word·latex·豆包
lijfrank13 天前
MacOS 下 VS Code + LaTeX + Skim 双向同步配置
vscode·macos·pdf·latex·mactex
爱叨叨的小嘟14 天前
Latex公式 转 word可编辑公式
word·typora·latex
weixin_4166600723 天前
原创分享:Markdown 转 Word 工具,一键导出Word/PDF文档
pdf·word·latex·deepseek
伟贤AI之路1 个月前
为什么AI里的公式复制到Word格式会乱?
人工智能·word·latex