这篇笔记的所有代码如下:
% !TEX TS-program = pdflatex
% !TEX encoding = UTF-8 Unicode% This is a simple template for a LaTeX document using the "article" class.
% See "book", "report", "letter" for other types of document.\documentclass[11pt]{article} % use larger type; default would be 10pt\usepackage[UTF8, scheme = plain]{ctex} % set input encoding (not needed with XeLaTeX)%%% Examples of Article customizations
% These packages are optional, depending whether you want the features they provide.
% See the LaTeX Companion or other references for full information.%%% PAGE DIMENSIONS
\usepackage{geometry} % to change the page dimensions
\geometry{a4paper, % 设置纸张为A4大小total={170mm,257mm}, % 设置文本区域的总宽度和高度left=25mm, % 设置左侧边距top=25mm, % 设置上侧边距headheight=15mm, % 设置页眉高度headsep=10mm % 设置页眉与文本之间的间距
}\usepackage{graphicx} % support the \includegraphics command and options% \usepackage[parfill]{parskip} % Activate to begin paragraphs with an empty line rather than an indent%%% PACKAGES
\usepackage{booktabs} % for much better looking tables
\usepackage{array} % for better arrays (eg matrices) in maths
\usepackage{paralist} % very flexible & customisable lists (eg. enumerate/itemize, etc.)
\usepackage{verbatim} % adds environment for commenting out blocks of text & for better verbatim
\usepackage{subfig} % make it possible to include more than one captioned figure/table in a single float
% These packages are all incorporated in the memoir class to one degree or another...%%% HEADERS & FOOTERS
\usepackage{fancyhdr} % This should be set AFTER setting up the page geometry
\pagestyle{fancy} % options: empty , plain , fancy
\renewcommand{\headrulewidth}{0pt} % customise the layout...
\lhead{}\chead{}\rhead{}
\lfoot{}\cfoot{\thepage}\rfoot{}%%% SECTION TITLE APPEARANCE
\usepackage{sectsty}
\allsectionsfont{\sffamily\mdseries\upshape} % (See the fntguide.pdf for font help)
% (This matches ConTeXt defaults)\usepackage{tikz}
\usetikzlibrary{shapes.geometric,through,decorations.pathmorphing, arrows.meta,quotes,mindmap,shapes.symbols,shapes.arrows,automata,angles,3d,trees,shadows,automata,arrows,shapes.callouts}\usepackage{amsmath} % 导入amsmath宏包\usepackage{caption}% 设置caption宏包,改变图注格式,显示为图X,而不是Figure X
\captionsetup[figure]{%labelfont=bf, % 图注标签加粗name={图} % 设置图注前缀为“图”
}%以下是algorithim,控制多行代码显示
\usepackage{algorithm}
\makeatletter
\newenvironment{breakablealgorithm}{% \begin{breakablealgorithm}\begin{center}\refstepcounter{algorithm}% New algorithm\hrule height.8pt depth0pt \kern2pt% \@fs@pre for \@fs@ruled\renewcommand{\caption}[2][\relax]{% Make a new \caption{\raggedright\textbf{\ALG@name~\thealgorithm} ##2\par}%\ifx\relax##1\relax % #1 is \relax\addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##2}%\else % #1 is not \relax\addcontentsline{loa}{algorithm}{\protect\numberline{\thealgorithm}##1}%\fi\kern2pt\hrule\kern2pt}}{% \end{breakablealgorithm}\kern2pt\hrule\relax% \@fs@post for \@fs@ruled\end{center}}
\makeatother\usepackage{minted} %使用minted库高亮代码%%% ToC (table of contents) APPEARANCE
\usepackage[nottoc,notlof,notlot]{tocbibind} % Put the bibliography in the ToC
\usepackage[titles,subfigure]{tocloft} % Alter the style of the Table of Contents
\renewcommand{\cftsecfont}{\rmfamily\mdseries\upshape}
\renewcommand{\cftsecpagefont}{\rmfamily\mdseries\upshape} % No bold!%%% END Article customizations%%% The "real" document content comes below...\title{\texttt{TikZ}\ 学习篇}
\author{蒟蒻小史}
%\date{} % Activate to display a given date or no date (if empty),% otherwise the current date is printed \begin{document}
\setlength{\parindent}{0pt} % 全局禁用首行缩进
\maketitle\section{画一条直线}这里是画了一条从(0,0)到(3,3)的直线。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw (0,0) -- (3,3);\end{tikzpicture}\caption{从(0,0)到(3,3)的直线}\label{fig:diagram1}
\end{figure}再画两条直线,分别是(0,0)到(3,3)和(1,2)到(3,6)。这里是在同一个坐标内画的图。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw (0,0) -- (3,3);\draw (1,2) -- (3,6);\end{tikzpicture}\caption{同一坐标系中两条直线}\label{fig:diagram2}
\end{figure}接下来画个复杂一点的。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color=blue!50,->](0,0) node[left]{$A$}-- node [color=red!70,pos=0.5,above,sloped]{Hello}(3,3) node[right]{$B$};\end{tikzpicture}\caption{复杂一点的图}\label{fig:diagram3}
\end{figure}$color=blue!50$ 表示使用 $50\%$ 的蓝色,因为 LaTeX 中,\% 用作注释,所以这里用 ! 替代。$->$ 表示的是线形是一个箭头。我们注意到,在起点坐标,$-–$,终点坐标后面,我们分别加入了一个 $\text{node}$ 元素,起点后面的 $\text{node}$ 表示的是加入一个标示,它在坐标点 $(0,0)$ 的左边,$--$ 后面的 $\text{node}$ 采用 $70\%$ 的红色,位置在线段的上方 $0.5$ 的位置,随线段倾斜,花括号中是 $\text{node}$ 的文字,为 $\text{Hello}$,终点坐标同理。$\text{node}$ 经常用于加入一些标注。\section{画圆}画一个圆心在原点,半径为 $10pt$ 的圆。画一个圆心在原点,半径为 $20pt$ 的红色圆。画一个圆心在原点,半径为 $30pt$ 的绿色圆,其中线条为2pt宽。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw (0,0) circle (10pt);\draw [color = red!50] (0,0) circle (20pt);\draw [color = green!50, line width=2pt] (0,0) circle (30pt);\end{tikzpicture}\caption{画圆}\label{fig:diagram4}
\end{figure}\section{画椭圆}画一个中心在原点,长轴、短轴分别为20pt和10pt的椭圆,并填充绿色,黑边;画一个中心在原点,长轴、短轴分别为40pt和20pt的红色椭圆;画一个中心在原点,长轴、短轴分别为20pt和40pt的蓝色椭圆;\begin{figure}[htbp]\centering\begin{tikzpicture}\filldraw[fill=green!20!white, draw=green!50!black] (0,0) ellipse (20pt and 10pt); \draw [color = red!50] (0,0) ellipse (40pt and 20pt); \draw [color = blue!50] (0,0) ellipse (20pt and 40pt); \end{tikzpicture}\caption{画椭圆}\label{fig:diagram5}
\end{figure}注意:$\text{fill=green!20!white}$ 的含义是创建一个颜色,它是 20\% 的绿色和 80\% 的白色的混合色。这种颜色混合是通过 \text{TikZ} 的颜色计算自动完成的,结果是一种介于绿色和白色之间的颜色,具体来说是一种较浅的绿色。\section{画多边形}\subsection{画四边形}\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (0,0) -- (0,1) -- (1,1) -- (1,0) --cycle ; \end{tikzpicture}\caption{四边形}\label{fig:diagram6}
\end{figure}\subsection{画五边形}\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (0,0) -- (0,1) -- (1,3) -- (2,3) -- (4,0) --cycle ; \end{tikzpicture}\caption{五边形}\label{fig:diagram7}
\end{figure}\newpage
\subsection{画矩形}对于矩形来说,我们还有更加简化的代码,我们可以通过命令 $\text{Rectangle}$(关键词)来实现。一般在绘制矩形时我们会确定两个坐标(左下和右上);对角线上两端点的坐标。并且可以通对角线上的坐标来改变矩形的形状。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (0,0) rectangle (2,2) ; \end{tikzpicture}\caption{矩形}\label{fig:diagram8}
\end{figure}\section{画曲线}Tikz 在两点除了能绘制直线段之外,我们还可以进行绘制曲线(抛物线)。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (0,0) parabola (5,2); \end{tikzpicture}\caption{两点间曲线}\label{fig:diagram9}
\end{figure}另外我们还可以通过点控制来绘制具有多个方向的曲线,利用关键词 $\text{control}$ 来引导曲线的走向,横纵坐标的大小会控制曲线转向的程度,空点的位置会确定曲线的方向。可以说成是 $\text{control}$ 点控制起到了绘制曲线方向的引导作用。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (0,0) .. controls (1,1) and (4,3) .. (5,2); \end{tikzpicture}\caption{多点曲线1}\label{fig:diagram10}
\end{figure}\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (0,0) .. controls (2,-3) and (4,3) .. (5,2); \end{tikzpicture}\caption{多点曲线2}\label{fig:diagram11}
\end{figure}\newpage
$\text{Bézier curve}$ (贝塞尔曲线)是应用于二维图形应用程序的数学曲线。 曲线定义:起始点、终止点(也称锚点)、控制点。通过调整控制点,贝塞尔曲线的形状会发生变化,如弹弓线,具体见:https://blog.csdn.net/sangxiaonian/article/details/51984013。画一个起点为(1,3),终点为(7,4),控制点为(2,-1),(4,-3)的贝塞尔曲线。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = blue!50, line width=2pt] (1,3) .. controls (2,-1) and (4,-3) .. (7,4); \end{tikzpicture}\caption{贝塞尔曲线}\label{fig:diagram12}
\end{figure}注意,用 $\text{control}$ 来引导曲线的走向时,只能有两个控制点,如果多个控制点,就得需要多条贝塞尔曲线来拟合。\section{画弧线}圆弧的绘制,我们首先是先确定这条弧起点坐标,然后确定初始初始角的大小,最后的参量是这条圆弧对应的圆的半径大小。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw [color = red!50, very thick, scale = 1 ] (3,0) arc (0 : 75 : 3cm); \end{tikzpicture}\caption{从(3,0)点出发,半径为3cm的75度弧线}\label{fig:diagram13}
\end{figure}\section{简体组合成立体图形}画一个圆和一个椭圆,注意这里椭圆是用两条弧线完成的,因为一条是实线,一条是虚线。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw[red, thick, scale=1] (3,3) node[left]{$O$} circle (3cm);\draw[violet, dashed, scale=1] (6,3) node[right]{$B$} arc (0 : 180 : 3cm and 1cm) node[left]{$A$};\draw[violet, scale=1] (6,3) arc (360 : 180 : 3cm and 1cm);\end{tikzpicture}\caption{圆和椭圆组成的立体图形}\label{fig:diagram14}
\end{figure}画一个边长为 $3cm$ 的立方体。\begin{figure}[htbp]\centering\begin{tikzpicture}\draw[ thick, scale=1] (1,1) -- (1,4) -- (4,4) -- (4,1) -- cycle;\draw[dashed, scale=1] (1,1) -- (2.466,2.5) -- (4,2.5) -- (5.466,2.5);\draw[thick, scale=1] (5.466,2.5) -- (4,1) ;\draw[thick, scale=1] (1,4) -- (2.466,5.5) -- (5.466,5.5) -- (4,4);\draw[thick, scale=1] (5.466,5.5) -- (5.466,2.5);\draw[dashed, scale=1] (2.466,5.5) -- (2.466,2.5) ;\end{tikzpicture}\caption{立方体}\label{fig:diagram15}
\end{figure}\section{网格}在 TikZ 中绘制网格通常涉及到定义网格的范围和样式。以下是一些关键参数和它们的作用,以及如何使用它们来绘制网格:\begin{itemize}\item 网格范围:左下角和右上角的坐标,这两个点定义了网格的边界。左下角的坐标确定了网格的起始点,而右上角的坐标确定了网格的结束点。\item 网格样式\begin{itemize}\item 线型:可以设置网格线是实线、虚线还是点线等。\item 颜色:可以定义网格线的颜色。 \item 间距:网格线之间的距离,可以是固定的,也可以是随着网格大小变化而变化的。\end{itemize}\item grid:TikZ 的一个库,提供了方便绘制网格的选项。
\end{itemize}\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6]\draw[step=2cm, gray, very thin, scale=1] (0,0) node[left]{$A$} grid (8,8) node[right]{$B$} ;\end{tikzpicture}\caption{网格}\label{fig:diagram16}
\end{figure}接下来,我们绘制一个填充单一颜色的网络。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6]\draw[step=2cm, gray, very thin, scale=1] (0,0) node[left]{$A$} grid (8,8) node[right]{$B$} ;\filldraw [black!50!white] (0,0) rectangle (2,2) ;\filldraw [black!50!white] (4,0) rectangle (6,2) ;\filldraw [black!50!white] (2,2) rectangle (4,4) ;\filldraw [black!50!white] (6,2) rectangle (8,4) ;\filldraw [black!50!white] (0,4) rectangle (2,6) ;\filldraw [black!50!white] (4,4) rectangle (6,6) ;\filldraw [black!50!white] (2,6) rectangle (4,8) ;\filldraw [black!50!white] (6,6) rectangle (8,8) ;\end{tikzpicture}\caption{填充颜色的网格}\label{fig:diagram17}
\end{figure}\newpage
在颜色填充过程中,与上面填充方式不同的是,我们可以渐变色填充,通过命令 shade,其中可以设置$<top color>=color$ 和 $ <bottom color>=color$ 或者$<left color>=color$ 和 $ <right color>=color$,只需要设置相对的两个方向的颜色,如图 \ref{fig:diagram18}。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6]\draw[step=2cm, gray, very thin, scale=1] (0,0) node[left]{$A$} grid (8,8) node[right]{$B$} ;\shade[left color=red, right color=green,scale=1] (2,2) rectangle (6,6);\end{tikzpicture}\caption{渐变色填充网格}\label{fig:diagram18}
\end{figure}%\newpage\section{笛卡尔坐标系(二维)}先来绘制一个简单的笛卡尔坐标系。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6]% 绘制坐标轴\draw[->] (-4,0) -- (4,0) node[right] {$x$};\draw[->] (0,-4) -- (0,4) node[above] {$y$};% 绘制网格\foreach \x in {-3,-2,-1,1,2,3} {\draw (\x,-0.1) -- (\x,0.1) node[anchor=north] {$\x$};\draw (-0.1,\x) -- (0.1,\x) node[anchor=east] {$\x$};}% 可选:绘制原点\fill (0,0) circle (2pt) node[below right] {$O$};\end{tikzpicture}\caption{平面直角坐标系}\label{fig:diagram19}
\end{figure}%\newpage
再来绘制一个复杂一点的坐标系。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.5]%画x和y轴坐标\draw[-Stealth] (-5.2,0)--(5.2,0); %-Stealth是一种箭头样式,在shapes.arrows中\draw[-Stealth] (0,-5.2)--(0,5.2);%画刻度\foreach \x in {0,1,...,8}{\draw[xshift=\x cm] (-4,0) -- (-4,0.1);\draw[yshift=\x cm] (0,-4) -- (0.1,-4);}; %标坐标原点\node[below] at (0.2,0){0};%标x轴刻度值\foreach \x in {-4,-3,...,-1}\node[below] at(\x,0){\x};\foreach \y in {1,2,...,4}\node[below] at(\y,0){\y};% 标注y轴刻度\foreach \y in {-4,-3,...,-1}\node[left] at(0,\y){\y};\foreach \y in {1,2,...,4}\node[left] at(0,\y){\y};\end{tikzpicture}\caption{平面直角坐标系}\label{fig:diagram20}
\end{figure}以上坐标系中,用到了 \text{foreach} 循环语句。\begin{breakablealgorithm}\caption{foreach块}\label{code:longcpp}\begin{minted}[breaklines]{latex}\foreach \x in {1,2,...,4}{执行语句;};\end{minted}
\end{breakablealgorithm}\section{绘制函数}下面我们进入函数世界。\subsection{幂函数}先来绘制一次函数。\[
f(x) = x
\]\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6]% 绘制坐标轴\draw[->] (-4,0) -- (4,0) node[right] {$x$};\draw[->] (0,-4) -- (0,4) node[above] {$y$};% 绘制网格\foreach \x in {-3,-2,-1,1,2,3} {\draw (\x,-0.1) -- (\x,0.1) node[anchor=north] {$\x$};\draw (-0.1,\x) -- (0.1,\x) node[anchor=east] {$\x$};}% 可选:绘制原点\fill (0,0) circle (2pt) node[below right] {$O$};\draw[thick,domain=-3.5:3.5] plot(\x,\x) node[right]{$f(x)=x$};\end{tikzpicture}\caption{$f(x)=x$}\label{fig:diagram21}
\end{figure}\begin{itemize}\item \text{thick}:这是一个线宽选项,用于设置线条的粗细。\item \text{domain=-3.5:3.5}:这个选项设置了函数图的 $x$ 值范围,从 $-3.5$ 到 $3.5$。这意味着 \text{TikZ} 将在这个区间内绘制函数 $f(x) = x$ 的图形。\item \text{plot(\textbackslash{x},\textbackslash{x})}:这个命令告诉 \text{TikZ} 绘制一个函数图,其中 \textbackslash{x} 是自变量,也用作因变量(即 $y$ 值),所以这里绘制的是一条通过原点的直线,斜率为 $1$。
\end{itemize}再来绘制一下以下函数:
\[
f(x)=\frac{1}{3} x+2
\]\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6]%画x和y轴坐标\draw[-Stealth] (-5.2,0)--(5.2,0); %-Stealth是一种箭头样式,在shapes.arrows中\draw[-Stealth] (0,-5.2)--(0,5.2);%画刻度\foreach \x in {0,1,...,8}{\draw[xshift=\x cm] (-4,0) -- (-4,0.1);\draw[yshift=\x cm] (0,-4) -- (0.1,-4);}; %标坐标原点\node[below] at (0.2,0){0};%标x轴刻度值\foreach \x in {-4,-3,...,-1}\node[below] at(\x,0){\x};\foreach \y in {1,2,...,4}\node[below] at(\y,0){\y};% 标注y轴刻度\foreach \y in {-4,-3,...,-1}\node[left] at(0,\y){\y};\foreach \y in {1,2,...,4}\node[left] at(0,\y){\y};\draw[thick,domain=-5:5] plot(\x,{(\x)*(1/3) + 2}) node[right]{$f(x)=\frac{1}{3} x+2$}; \end{tikzpicture}\caption{$f(x)=\frac{1}{3} x+2$}\label{fig:diagram22}
\end{figure}\newpage
下面我们来绘制函数:
\[
f(x) = x^n \qquad n \in \left\{-1, \frac{1}{3}, \frac{1}{2}, 1, 2, 3\right\}
\]\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]%画x和y轴坐标\draw[-Stealth] (-5.2,0)--(5.2,0); %-Stealth是一种箭头样式,在shapes.arrows中\draw[-Stealth] (0,-5.2)--(0,5.2);%画刻度\foreach \x in {0,1,...,8}{\draw[xshift=\x cm] (-4,0) -- (-4,0.1);\draw[yshift=\x cm] (0,-4) -- (0.1,-4);}; %标坐标原点\node[below] at (0.2,0){0};%标x轴刻度值\foreach \x in {-4,-3,...,-1}\node[below] at(\x,0){\x};\foreach \y in {1,2,...,4}\node[below] at(\y,0){\y};% 标注y轴刻度\foreach \y in {-4,-3,...,-1}\node[left] at(0,\y){\y};\foreach \y in {1,2,...,4}\node[left] at(0,\y){\y};\draw[black,thick,domain=-0.25:-5] plot(\x,{1/(\x)}) node[left]{$f(x)=\frac{1}{x}$}; %这里区间要按两个写,因为x=0时报错。\draw[black,thick,domain=0.25:5] plot(\x,{1/(\x)}) node[right]{$f(x)=\frac{1}{x}$}; %这里区间要按两个写,因为x=0时报错。\draw[gray,thick,domain=-1.7:1.7] plot({(\x)^3},\x) node[right]{$f(x)=x^\frac{1}{3}$}; %同样要注意取值范围\draw[yellow,thick,domain=0:2.5] plot({(\x)^2},\x) node[right]{$f(x)=x^\frac{1}{2}$}; %同样要注意取值范围\draw[red,thick,domain=-5:5] plot(\x,\x) node[right]{$f(x)=x$}; \draw[blue,thick,domain=-2.5:2.5] plot(\x,{(\x)^2}) node[right]{$f(x)=x^2$}; \draw[green,thick,domain=-1.8:1.8] plot(\x,{(\x)^3}) node[left]{$f(x)=x^3$}; \end{tikzpicture}\caption{$f(x)=x^n$}\label{fig:diagram23}
\end{figure}\subsection{指数函数和对数函数}先来看指数函数:\[
f(x) = \alpha ^x
\]分别画出当$ \alpha = \frac{1}{2},2,3$时的曲线。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]%画x和y轴坐标\draw[-Stealth] (-5.2,0)--(5.2,0); %-Stealth是一种箭头样式,在shapes.arrows中\draw[-Stealth] (0,-5.2)--(0,5.2);%画刻度\foreach \x in {0,1,...,8}{\draw[xshift=\x cm] (-4,0) -- (-4,0.1);\draw[yshift=\x cm] (0,-4) -- (0.1,-4);}; %标坐标原点\node[below] at (0.2,0){0};%标x轴刻度值\foreach \x in {-4,-3,...,-1}\node[below] at(\x,0){\x};\foreach \y in {1,2,...,4}\node[below] at(\y,0){\y};% 标注y轴刻度\foreach \y in {-4,-3,...,-1}\node[left] at(0,\y){\y};\foreach \y in {1,2,...,4}\node[left] at(0,\y){\y};\draw[black,thick,domain=3.7:-2.2] plot(\x,{2^(-\x)}) node[left]{$f(x)=\frac{1}{2}^x$}; \draw[blue,thick,domain=-3.7:2.2] plot(\x,{2^(\x)}) node[right]{$f(x)=2^{x}$}; \draw[red,thick,domain=-2:1.5] plot(\x,{3^(\x)}) node[right]{$f(x)=3^{x}$} ; %\node[red] at (-2, -1) {$f(x) = 3^x$};\end{tikzpicture}\caption{$f(x)=\alpha ^x $}\label{fig:diagram24}
\end{figure}\newpage
接下来画一下对数
\[
f(x) = \log_n{x}
\]分别画出当$n= \frac{1}{2},2,10$时的曲线。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]%画x和y轴坐标\draw[-Stealth] (-5.2,0)--(5.2,0); %-Stealth是一种箭头样式,在shapes.arrows中\draw[-Stealth] (0,-5.2)--(0,5.2);%画刻度\foreach \x in {0,1,...,8}{\draw[xshift=\x cm] (-4,0) -- (-4,0.1);\draw[yshift=\x cm] (0,-4) -- (0.1,-4);}; %标坐标原点\node[below] at (0.2,0){0};%标x轴刻度值\foreach \x in {-4,-3,...,-1}\node[below] at(\x,0){\x};\foreach \y in {1,2,...,4}\node[below] at(\y,0){\y};% 标注y轴刻度\foreach \y in {-4,-3,...,-1}\node[left] at(0,\y){\y};\foreach \y in {1,2,...,4}\node[left] at(0,\y){\y};\draw[yellow!70!blue,thick,domain=3.7:-2.2] plot({2^(-\x)},\x) node[right]{$f(x)=\log_{\frac{1}{2}}{x}$}; \draw[green!70!black,thick,domain=-3.7:2.2] plot({2^(\x)},\x) node[right]{$f(x)=\log_2{x}$}; \draw[red!70!yellow,thick,domain=-1.7:0.7] plot({10^(\x)},\x) node[right]{$f(x)=\log_{10}{x}$}; \end{tikzpicture}\caption{$f(x) = \log_n{x} $}\label{fig:diagram25}
\end{figure}最后,我们把对数函数和指数函数画到一个坐标系里。\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]%画x和y轴坐标\draw[-Stealth] (-5.2,0)--(5.2,0); %-Stealth是一种箭头样式,在shapes.arrows中\draw[-Stealth] (0,-5.2)--(0,5.2);%画刻度\foreach \x in {0,1,...,8}{\draw[xshift=\x cm] (-4,0) -- (-4,0.1);\draw[yshift=\x cm] (0,-4) -- (0.1,-4);}; %标坐标原点\node[below] at (0.2,0){0};%标x轴刻度值\foreach \x in {-4,-3,...,-1}\node[below] at(\x,0){\x};\foreach \y in {1,2,...,4}\node[below] at(\y,0){\y};% 标注y轴刻度\foreach \y in {-4,-3,...,-1}\node[left] at(0,\y){\y};\foreach \y in {1,2,...,4}\node[left] at(0,\y){\y};\draw[black,thick,domain=3.7:-2.2] plot(\x,{2^(-\x)}) node[left]{$f(x)=\frac{1}{2}^x$}; \draw[blue,thick,domain=-3.7:2.2] plot(\x,{2^(\x)}) node[right]{$f(x)=2^{x}$}; \draw[red,thick,domain=-2:1.5] plot(\x,{3^(\x)}) node[right]{$f(x)=3^{x}$} ; \draw[yellow!70!blue,thick,domain=3.7:-2.2] plot({2^(-\x)},\x) node[right]{$f(x)=\log_{\frac{1}{2}}{x}$}; \draw[green!70!black,thick,domain=-3.7:2.2] plot({2^(\x)},\x) node[right]{$f(x)=\log_2{x}$}; \draw[red!70!yellow,thick,domain=-1.7:0.7] plot({10^(\x)},\x) node[right]{$f(x)=\log_{10}{x}$}; \end{tikzpicture}\caption{$f(x)=\alpha ^x \ and \ f(x) = \log_n{x}$}\label{fig:diagram26}
\end{figure}\newpage
\subsection{三角函数}先来看正弦函数
\[
f(x) = \sin {x}
\]\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]% 绘制坐标轴\draw[->] (-4,0) -- (4,0) node[right] {$x$};\draw[->] (0,-4) -- (0,4) node[above] {$y$};% 绘制网格\foreach \x in {-3,-2,-1,1,2,3} {\draw (\x,-0.1) -- (\x,0.1) node[anchor=north] {$\x$};\draw (-0.1,\x) -- (0.1,\x) node[anchor=east] {$\x$};}% 可选:绘制原点\fill (0,0) circle (2pt) node[below right] {$O$};\draw[domain=-pi:pi]plot(\x,{sin(\x r)});\node at(1.9,1.2){$f(x)=\sin x$};\end{tikzpicture}\caption{正弦函数}\label{fig:diagram27}
\end{figure}接下来是余弦函数
\[
f(x) = \cos {x}
\]\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]% 绘制坐标轴\draw[->] (-6,0) -- (6,0) node[right] {$x$};\draw[->] (0,-6) -- (0,6) node[above] {$y$};% 绘制网格\foreach \x in {-5,-4,-3,-2,-1,1,2,3,4,5} {\draw (\x,-0.1) -- (\x,0.1) node[anchor=north] {$\x$};\draw (-0.1,\x) -- (0.1,\x) node[anchor=east] {$\x$};}% 可选:绘制原点\fill (0,0) circle (2pt) node[below right] {$O$};\draw[blue, domain=-(3/2)*pi:(3/2)*pi]plot(\x,{cos(\x r)});\node at(-1.9,1.2){$f(x)=\cos x$};\end{tikzpicture}\caption{余弦函数}\label{fig:diagram28}
\end{figure}\newpage
最后是正切函数
\[
f(x) = \tan {x}
\]\begin{figure}[htbp]\centering\begin{tikzpicture}[scale=0.6, samples=1000]% 绘制坐标轴\draw[->] (-6,0) -- (6,0) node[right] {$x$};\draw[->] (0,-6) -- (0,6) node[above] {$y$};% 绘制网格\foreach \x in {-5,-4,-3,-2,-1,1,2,3,4,5} {\draw (\x,-0.1) -- (\x,0.1) node[anchor=north] {$\x$};\draw (-0.1,\x) -- (0.1,\x) node[anchor=east] {$\x$};}% 可选:绘制原点\fill (0,0) circle (2pt) node[below right] {$O$};\draw[red,domain=-1.36:1.36]plot(\x,{tan(\x r)});\draw[red,domain=1.78:4.5]plot(\x,{tan(\x r)});\draw[red,domain=-4.5:-1.78]plot(\x,{tan(\x r)});\node at(-4.5,4){$f(x)=\tan x$};\end{tikzpicture}\caption{正切函数}\label{fig:diagram29}
\end{figure}\end{document}