LaTeX:pgf usepackage(宏包)的中译

在这里插入图片描述

1. 引言
Pgfplots是一种可视化工具,可以简化在文档中包含绘图的过程。基本思想是,您提供输入数据/公式,然后pgfplots完成其余工作。

\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}%此处结束最远的图
\hskip 5pt %此处此处开始3d图
\begin{tikzpicture}\begin{axis}\addplot3[
surf,]{exp(-x2-y2)*x};
\end{axis}
\end{tikzpicture}
在这里插入图片描述

由于pgfplot基于tikz,因此该图必须位于tikzpicture环境中。然后,环境声明

\begin{axis},
\end{axis}

将为绘图设置正确的缩放比例,有关其他轴环境,请参见参考指南。
要添加实际图,请使用命令

\addplot[color=red]{log(x)};

。在方括号内可以传递一些选项,在这种情况下,我们将图的颜色设置为红色;方括号是必需的,如果没有传递任何选项,则方括号之间将留有空白。在花括号内,您可以绘制函数。重要的是要记住,该命令必须以分号 结尾;。
要在第一个图旁边放置第二个图,请声明一个新的tikzpicture环境。不要插入新行,而是要留一个小的空白,在这种情况下,hskip 10pt将插入一个10pt宽的空白。
除以外,其余语法相同

\addplot3 [surf,]{exp(-x2-y2)*x};

。这将添加一个3D plot,方括号内的选项surf声明这是一个曲面图。要绘制的函数必须放在大括号内。同样,不要忘了用分号代替 ;在命令末尾。
注:我们推荐一个很好的做法,缩进代码-看到在上面的例子中第二个情节-并添加一个逗号,在传递给每个选项的结束

\addplot

。这样,代码更具可读性,并且在需要时更容易添加其他选项。

2. 文件序言
要将pgfplots包含在文档中非常容易,只需在您的序言中添加下一行即可:

\usepackage{pgfplots}

可以在序言中对此包装进行一些其他调整。要更改每个图的大小并确保向后兼容(推荐),请添加下一行:

\pgfplotsset{width=10cm,compat=1.9}

这会将每个pgfplot图形的大小更改为10厘米,这是巨大的;您可以使用不同的单位(磅,毫米,英寸)。该compat的参数是代码工作,对包版本1.9或更高版本。
由于LaTeX最初并不是考虑绘图功能而设计的,因此当文档中有多个pgfplot图形或它们非常复杂时,渲染它们将花费大量时间。为了缩短编译时间,您可以配置软件包以将图形导出为单独的PDF文件,然后将其导入文档中,将以下所示的代码添加到序言中:

\usepgfplotslibrary{external}
\tikzexternalize

3. 2D图
Pgfplots 2D绘图功能非常丰富,您可以个性化绘图以准确显示所需的内容。然而,默认选项通常给出了很好的效果,因此,所有你需要做的是输入数据和大LaTeX将完成剩下的:

  1. 绘制数学表达式

绘制数学表达式非常简单:

\begin{tikzpicture}
\begin{axis}[
axis lines = left,
xlabel = x x x,
ylabel = { f ( x ) f(x) f(x)},]%Below the red parabola is defined\addplot [
domain=-10:10,
samples=100,
color=red,
]{x^2 - 2x - 1};\addlegendentry{ x 2 − 2 x − 1 x^2 - 2x - 1 x22x1}%Here the blue parabloa is defined\addplot [
domain=-10:10,
samples=100,
color=blue,]
{x^2 + 2
x + 1};\addlegendentry{ x 2 + 2 x + 1 x^2 + 2x + 1 x2+2x+1}
\end{axis}
\end{tikzpicture}

在这里插入图片描述
让我们逐行分析新命令:

axis lines = left.

这将仅在图的左侧和底部设置轴,而不是默认框。参考指南中的其他自定义选项。

xlabel = x x x和ylabel = { f ( x ) f(x) f(x)}

不言自明的参数名称,可让您在水平和垂直轴上放置标签。请注意大括号之间的ylabel值,该括号告诉pgfplots如何对文本进行分组。该xlabel可以有括号也。这对于可能会使pgfplot混淆的复杂标签很有用。

\addplot

这将在轴上添加一个图,在介绍中介绍了一般用法。此示例中有两个新参数。

domain=-10:10

这将确定的值范围。

samples=100

确定domain定义的间隔中的点数。样本值越大,您获得的图形越锐利,但是渲染所需的时间更长。

\addlegendentry{ x 2 − 2 x − 1 x^2 - 2x - 1 x22x1}

这将添加图例以标识功能。
要将另一个图形添加到绘图中,只需编写一个新\addplot条目。

  1. 从数据绘图

科学研究通常会产生必须分析的数据。下一个示例显示如何使用pgfplots绘制数据:

\begin{tikzpicture}
\begin{axis}
[title={Temperature dependence of CuSO$_4\cdot$5H$_2$O solubility},
xlabel={Temperature [\textcelsius]},
ylabel={Solubility [g per 100 g water]},
xmin=0, xmax=100,
ymin=0, ymax=120,
xtick={0,20,40,60,80,100},
ytick={0,20,40,60,80,100,120},
legend pos=north west,
ymajorgrids=true,
grid style=dashed,] 
\addplot[
color=blue,
mark=square, ]
coordinates {(0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)};
\legend{CuSO$_4\cdot$5H$_2$O}
\end{axis}\end{tikzpicture}

在这里插入图片描述
这里有一些新的命令和参数:

title={Temperature dependence of CuSO$_4\cdot 5 H 5H 5H_2$O solubility}

如您所料,为图形分配标题。标题将显示在绘图上方。

xmin=0, xmax=100, ymin=0, ymax=120

x和y轴的最小和最大范围。

xtick={0,20,40,60,80,100}, ytick={0,20,40,60,80,100,120}

标记放置的点。如果为空,则自动设置刻度线。

legend pos=north west

图例框的位置。查看参考指南以了解更多选项。

ymajorgrids=true

这将启用/禁用y轴上刻度位置的网格线。使用xmajorgrids以使在x轴网格线。

grid style=dashed

不言自明。显示虚线网格线。

mark=square

这在中的每个点绘制一个标记平方cordinates阵列。每个标记将通过一条直线与下一个标记连接。

coordinates {(0,23.1)(10,27.5)(20,32)…}

要绘制的点的坐标。这是您要以图形方式分析的数据。
如果数据在文件中,通常是这种情况;而不是命令\addplot,coordinates您应该使用

\addplot table {file_with_the_data.dat}

其余选项在此环境中有效。

  1. 散点图
    散点图通过使用某种标记来表示信息,这些标记很常见,例如,在计算统计回归时。让我们用一些数据开始,下面的示例是显示我们将图中的数据文件的结构:

GPA ma ve co un
3.45 643 589 3.76 3.52
2.78 558 512 2.87 2.91
2.52 583 503 2.54 2.4
3.67 685 602 3.83 3.47
3.24 592 538 3.29 3.47
2.1 562 486 2.64 2.37

下一个示例是此表中前两列的散点图:

\begin{tikzpicture}
 \begin{axis}[enlargelimits=false,]
 \addplot+[only marks,scatter,mark=halfcircle*,mark size=2.9pt]
table[meta=ma]{scattered_example.dat};
\end{axis}
\end{tikzpicture}

在这里插入图片描述
除了scatter之外,传递给axis和addplot环境的参数也可以在数据图中使用。下面的代码说明:

enlarge limits=false

这将收缩轴,因此具有最大值和最小值的点位于图的边缘。

only marks

真正明确,将在每个点上打上标记。

scatter

使用散点图时,将根据值对点进行着色,其颜色由以下meta说明的参数给出。

mark=halfcircle*

在每个点上使用的标记类型,请查阅参考指南以获取可能值的列表。

mark size=2.9pt

每个标记的大小,可以使用不同的单位。

table[meta=ma]{scattered_example.dat};

在这里,table命令告诉LaTeX要绘制的数据在文件中。所述

meta=ma

参数被传递到选择用于确定每个点的颜色的列。大括号内是数据文件的名称。
5. 条形图
条形图(也称为条形图和条形图)用于显示收集的数据,主要是有关某种种群的统计数据。pgfplots中的条形图是高度可定制的,但是在这里我们将展示一个“可行”的示例:

\ begin { tikzpicture } 
\ begin { axis } [ x刻度标签样式= { / pgf /数字格式/ 1000 sep = },
	ylabel = Year,
	largeenlimits = 0.05,
	图例样式= { at = {(0.5,-0.1)},anchor = north,legleg column = -1 },
	ybar interval = 0.7,]
	 \ addplot 
	坐标{(2012,408184)(2011,408348)
		 (2010,414870)(2009,412156)};
	 \ addplot 
	坐标{(2012,388950)(2011,393007)
		(2010,398449)(2009,395972)};
		\ legend {男性,女性} 
		\ end {轴}
		 \ end { tikzpicture }

在这里插入图片描述
该图从已经说明过的tikzpicture和轴环境的声明开始,但是轴声明具有许多新参数:

x tick label style={/pgf/number format/1000 sep=}

这段代码定义了情节的完整样式。使用这种样式,您可以\addplot在此轴环境中包括多个命令,它们将适合并且看起来很好,而无需进行进一步的调整(ybar下面描述的参数对于此功能是必不可少的)。

enlargelimits=0.05,

扩大条形图中的限制是必要的,因为这类图通常需要在条形上方有一些额外的空间才能看起来更好和/或添加标签。然后数字0.05相对于图的总高度。

legend style={at={(0.5,-0.2)}, anchor=north,legend columns=-1}

同样,这在大多数情况下都可以正常工作。如果有的话,请更改-0.2的值以使图例离x轴更近/更远。

ybar interval=0.7,

每个条的厚度。1表示条形将彼此相邻,没有间隙; 0表示没有条形,只有垂直线。
将coordinates在这种情节确定的酒吧和其高度的基点。
y轴上的标签最多显示4位数字。如果您使用的数字大于9999,pgfplot将使用与示例相同的符号。

4. 3D图
pgfplots具有您可能在绘图软件中期望的3d绘图功能。

  1. 绘制数学表达式
    还有在这个简单的例子介绍,让我们对一些稍微复杂的工作:
\begin{tikzpicture}
\begin{axis}[
    title=Exmple using the mesh parameter,
    hide axis,
    colormap/cool,]
    \addplot3[
    mesh,
    samples=50,
    domain=-8:8,]{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\addlegendentry{$\frac{sin(r)}{r}$}
\end{axis}
\end{tikzpicture}

在这里插入图片描述
此处的大多数命令已经进行了解释,但是有3项新内容:

hide axis

轴环境中的此选项是自描述的,不会显示轴。

colormap/cool

是在绘图中使用的配色方案。查看参考指南以了解更多配色方案。

mesh

该选项也是自描述的,在入门示例中还检查了surf参数。
注意:当使用三角函数时,pgfplots使用度作为默认单位,如果角度为弧度(如本例所示),则必须使用

de deg function

转换为度。

  1. 等高线图
    在pgfplots中可以绘制等高线图,但是必须通过外部程序预先计算数据。让我们来看看:
\ begin { tikzpicture }
 \ begin { axis } 
[ 
    title = {等高线图,从顶部观看},
    view = { 0 } { 90 } 
] 
\ addplot 3 [
    等高线gnuplot = {级别= { 0.8,0.4,0.2,-0.2 }} 
] { sin(deg(sqrt(x ^ 2 + y ^ 2)))/ sqrt(x ^ 2 + y ^ 2)};
\ end {轴} 
\ end { tikzpicture}

在这里插入图片描述
这是上一节中使用的相同方程式的一些轮廓线图。该值标题参数是大括号内,因为它包含一个逗号,所以我们使用分组括号,以避免传递给其它参数混淆\begin{axis}声明。有两个新命令:

view={0}{90}

这将更改绘图的视图。参数将传递到轴环境,这意味着该参数可用于任何其他类型的3d图中。第一个值是围绕z轴的旋转(以度为单位);第二个值是绕X轴旋转视图。在此示例中,当我们将围绕z轴的0°旋转和围绕x轴的90°旋转组合在一起时,我们最终从顶部看到了绘图。

contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}

这行代码有两件事:第一,告诉LaTeX使用外部软件gnuplot计算轮廓线。这在ShareLaTeX中可以正常工作,但如果要在本地LaTeX安装中使用此命令,则必须先安装gnuplot(matlab也可以使用,在这种情况下,请在命令中写入matlab而不是gnuplot)。其次,子参数levels是要在其中计算轮廓线的高程值的列表。

  1. 根据数据绘制表面
    要将一组数据绘制到3d曲面中,我们需要的是每个点的坐标。这些坐标可以是无序集合,在这种情况下,可以是矩阵:
\ begin { tikzpicture } 
\ begin {轴} 
\ addplot 3 [ surf,]
坐标{ 
(0,0,0)(0,1,0)(0,2,0)
(1,0,0)(1, 1,0.6)(1,2,0.7)
(2,0,0)(2,1,0.7)(2,2,1.8)};
\ end {轴} 
\ end { tikzpicture }

在这里插入图片描述
传递给coordinates参数的点被视为包含在3 x 3矩阵中,该矩阵为白色行,每个矩阵行的分隔符隔开。
本文中3d绘图的所有选项都适用于数据表面。

  1. 参数图
    参数图的语法略有不同。让我们来看看:
\ begin { tikzpicture } 
\ begin { axis } 
    [ 
    view = { 60 } { 30 },
    ] 
    \ addplot 3 [ 
    domain = 0:5 * pi,
    samples = 60,
    samples y = 0,
] 
({ sin(deg(x ))},
 { cos(deg(x))},
 { x });
 \ end {轴} 
 \ end { tikzpicture }

在这里插入图片描述
在这个例子中,只有两件事:第一,samples y=0防止pgfplots加入到螺旋的极端。第二,绘制函数传递到addplot3环境的方式。每个参数函数在大括号内分组,并且三个参数用括号定界。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值