查看原文
其他

使用 TikZ 绘制图形:基础知识

庄闪闪 庄闪闪的R语言手册 2024-05-04

点击下方公众号,回复资料分享,收获惊喜

简介

TikZ 是在 LaTeX 中创建图形元素的最复杂和强大的工具。第一期介绍了:使用 TikZ 绘制图形:介绍和资料分享。本期通过一个简单的例子,介绍一些基本概念:绘制线条曲线矩形等。

首先,在文档的导言部分加载 TikZ 包,方法是包含一行 \usepackage{tikz},然后使用 tikzpicture 环境绘制图形。

\documentclass{article}
\usepackage{tikz}
\usepackage{ctex} %解决中文显示问题
\begin{document}
 \begin{tikzpicture}
  \draw[gray, thick] (-1,2) -- (2,-1);
  \draw[gray, thick] (-1,-1) -- (2,2);
  \filldraw[black] (0.5,0.5) circle (2pt) node[anchor=west]{交点};
 \end{tikzpicture}
\end{document}

得到以下结果:

添加线\draw[gray, thick] 定义了一个图形元素,其颜色为灰色,线条粗细为 thick。该线实际上由两个端点 (-1,2)(2,-1) 定义,通过 -- 连接这两个点。

添加点\filldraw[black]绘制圆并使用黑色填充。位置为 (0.5,0.5) 和半径 (2pt)。点旁边是一个节点,包含文本 "交点" 的方框,并以点的西侧为锚点。

注意:每个绘制命令末尾使用的分号;

基础元素:点,线和路径

本节我们展示如何创建一些基本的图形元素,这些元素可以组合在一起创建更为复杂的图形。

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \draw (-2,0) -- (2,0);
    \filldraw [red] (0,0) circle (2pt);
    \draw (-2,-2) .. controls (0,0) .. (2,-2);
    \draw (-2,2) .. controls (-1,0) and (1,0) .. (2,2);
  \end{tikzpicture}
\end{document}

得到以下结果:

在这个例子中有三个基本命令:

  1. \draw (-2,0) -- (2,0);: 定义一条线段,其端点分别为 (-2,0)(2,0)

  2. \filldraw [gray] (0,0) circle (2pt);: 创建一个非常小的灰色圆,其圆心为 (0,0),半径为 (2pt)\filldraw 命令用于绘制元素并以特定颜色进行填充。有关更多示例,请参阅下一节。

  3. \draw (-2,2) .. controls (-1,0) and (1,0) .. (2,2);: 绘制贝塞尔曲线。定义四个点:(-2,2)(2,2) 是它的端点,(-1,0)(1,0) 是控制点,决定了曲线的"曲度"。

基本几何形状:圆,椭圆和多边形

几何图形可以由更简单的元素构建,因此让我们从圆、椭圆和弧开始。

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \begin{tikzpicture}
    \filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);
    \fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);
    \draw[ultra thick, ->] (6.5,0) arc (0:220:1);
  \end{tikzpicture}
\end{document}

可以得到以下结果:

在这个例子中有三个基本命令:

  1. \filldraw[color=red!60, fill=red!5, very thick](-1,0) circle (1.5);: 此命令在前面的部分用于绘制一个点,但在这个例子中,在方括号内有一些额外的参数。下面是这些参数的解释:

  • color=red!60: 圆环的颜色设置为 60% 的红色(比"纯"红色更浅)。请参阅参考指南以获取 LaTeX 中默认颜色的列表;此外,请参阅在 LaTeX 中使用颜色以了解如何创建自己的颜色。

  • fill=red!5: 填充圆为更浅的红色。

  • very thick: 此参数定义了线条的粗细。请参阅参考指南以获取完整的数值列表。

  • \fill[blue!50] (2.5,0) ellipse (1.5 and 0.5);: 创建椭圆,提供中心点 (2.5,0) 和两个半径:水平和垂直分别为 (1.50.5)。

  • \draw[ultra thick, ->] (6.5,0) arc (0:220:1);: 绘制从点 (6.5,0) 开始的弧。额外的参数 -> 表示弧末端将有一个箭头。除了起点外,还必须提供三个额外的值:起始和结束角度,以及半径;在这里设置为 (0:220:1) 。

  • 除了曲线几何形状,您还可以创建使用直线的元素,使用类似的语法:

    \documentclass{article}
    \usepackage{tikz}
    \begin{document}
    \begin{tikzpicture}
    \draw[blue, very thick] (0,0) rectangle (3,2);
    \draw[orange, ultra thick] (4,0) -- (6,0) -- (5.7,2) -- cycle;
    \end{tikzpicture}
    \end{document}
    1. \draw[blue, very thick] (0,0) rectangle (3,2);: 矩形是通过特殊命令 rectangle 创建的。需要提供两个点,第一个点是开始绘制矩形的地方,第二个点是对角线上的点。

    2. \draw[orange, ultra thick] (4,0) -- (6,0) -- (5.7,2) -- cycle;: 要绘制多边形,需要绘制由直线组成的闭合路径:从 (4,0)(6,0),以及从 (6,0)(5.7,2) 的一条线。cycle 指令意味着起始点和结束点应该重合,从而创建一个“闭合”路径(形状),这导致构建最终的线段。

    图表

    在 TikZ 中,节点可能是最灵活的元素。我们在介绍中已经使用了一个节点——用于在图中添加一些文本。下一个例子使用节点创建一个图表。

    \documentclass{article}
    \usepackage{tikz}
    \usetikzlibrary{positioning}
    \begin{document}
    \begin{tikzpicture}[
    roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm},
    squarednode/.style={rectangle, draw=red!60, fill=red!5, very thick, minimum size=5mm},
    ]

    %Nodes
    \node[squarednode]      (maintopic)                              {2};
    \node[roundnode]        (uppercircle)       [above=of maintopic] {1};
    \node[squarednode]      (rightsquare)       [right=of maintopic] {3};
    \node[roundnode]        (lowercircle)       [below=of maintopic] {4};
    %Lines
    \draw[->] (uppercircle.south) -- (maintopic.north);
    \draw[->] (maintopic.east) -- (rightsquare.west);
    \draw[->] (rightsquare.south) .. controls +(down:7mm) and +(right:7mm) .. (lowercircle.east);
    \end{tikzpicture}
    \end{document}

    得到以下结果:

    这个图中实际上有三个命令:节点定义节点声明连接两个节点的线

    1. roundnode/.style={circle, draw=green!60, fill=green!5, very thick, minimum size=7mm}:作为参数传递给 tikzpicture 环境。定义了一个节点,将被引用为 roundnode:这个节点将是一个圆,其外环将用 绿色!60 绘制,并用 绿色!5 填充。线条将非常粗,其最小大小为 7mm。下面的行定义了一个使用类似参数的名为 squarednode 的第二个矩形形状的节点。

    2. \node[squarednode] (maintopic) {2};:这将创建一个 squarednode,如前面的命令中定义的。此节点将具有 maintopic 的 ID,并包含数字 2。如果在大括号内留空,将不显示文本。

    3. [above=of maintopic]:请注意,除了第一个节点外,所有节点都有一个额外的参数,用于确定相对于其他节点的位置。例如,[above=of maintopic] 意味着该节点应该出现在名为 maintopic 的节点上方。为了使此定位系统正常工作,必须在导言中添加 \usetikzlibrary{positioning}。如果没有 positioning 库,您可以使用语法 above of=maintopic,但定位语法更灵活和强大:您可以将其扩展为写成 above=3cm of maintopic,即控制相对于 maintopic 的实际距离。

    4. \draw[->] (uppercircle.south) -- (maintopic.north);:将绘制类似箭头的直线。语法在基本元素部分已经解释过。唯一的区别在于编写线的端点的方式:通过引用一个节点和相对于节点的位置。

    小编有话说

    • 本文主要介绍 TiKZ 包中基础知识:1. 基础元素:点,线和路径;2. 基本几何形状:圆,椭圆和多边形;3. 图表

    • 本文主要参考:TikZ package。在了解基础知识后,小编将继续学习如何使用 Mathcha 绘制图形并转化为 TeX 代码。




    可视化推文推荐


    R可视乎|空间地理数据可视化(1)


    空间地理数据可视化之 ggplot2 包及其拓展


    空间地理数据可视化之 tmap 包及其拓展


    R可视乎|创建乐高版马赛克图


    R可视乎|用R给心仪的对象表白吧



    继续滑动看下一个
    向上滑动看下一个

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存