我正在尝试用 LaTeX 整理一些图表。
我的困境如下。我有一份技术报告,其中包含大量来自 MATLAB 的图像。我需要能够徒手绘制/绘制其他图(例如小波函数):
所以我有几个选择:
- 使用 PowerPoint 来制作所有图表(我最熟悉的创作工具)。问题是一切看起来与 MATLAB + PowerPoint 的内容不相符/不匹配
- 用 MATLAB 做所有事情。生成以我想要的方式说明我的观点的图表可能有点乏味,但这是可以做到的。
- 使用某种 LaTeX 图表工具包。我目前对 LaTeX 图表一无所知,但我不介意探索一下。 看起来很乏味。 在那儿任何具有 GUI 的 LaTeX 图表工具包?
作为一名经验丰富的 LaTeX 用户,你的如何指导如何生成专业数学图表,使它们看起来不突兀,而且不需要几十年的时间才能完成?
答案1
对于这样的任务,你可以用坐标来完成一切。正如你在问题评论中提到的,要使用的包是 pgfplots。它是基于文本的,但非常容易使用。我认为它实际上比 Matlab 更好,可以快速获得你想要的图。例如,你的第一个图将是(已更新,谢谢 Jake!)
\documentclass[10pt]{article}
\usepackage{pgfplots}
\begin{document}
\pgfplotsset{width=6cm,compat=newest}
\begin{figure}[ht]
\begin{tikzpicture}
\begin{axis}[
scale only axis,
xlabel={$x$-axis},
ylabel={$y$-axis},
ymin=-1.5,
ymax=1.5,
xmin=-0.5,
xmax=1.5,
]
\addplot[color=blue,thick] coordinates {
(0, 0)
(0, 1)
(1, 1)
(1, 0)
};
% The following command puts the line in on the axis.
\draw ({rel axis cs:0,0} |- {axis cs:0,0}) -- ({rel axis cs:1,0} |- {axis cs:0,0});
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
结果如下:
现在看起来代码很多,但大部分代码都是可重复使用的。轴标签很明显,范围也很明显。如果您习惯在 matlab 中绘图,这应该很清楚。这样scale only axis
做是为了使 pgfplot 轴的大小为 6cm,而不是整个带有标签的图。
使用 可以将内容添加到画布中\addplot
。在这种情况下,我直接输入坐标;非常适合您的草图。不过,您也可以输入文件。如果您的文件包含顶部带有标签的数据列。例如,此代码
\pgfplotsset{width=6cm,compat=newest}
\begin{axis}[
scale only axis,
xlabel={$\tau$ ($\mu$s)},
ylabel={P(bitflip)},
ymin=0,
ymax=1,
xmin=0,
xmax=125.66,
]
\addplot[thick,color=red]
table[x=time,y=fidelity] {data.txt};
\end{axis}
\end{tikzpicture}
使用如下所示的数据文件data.txt
(制表符分隔,易于用 Matlab 生成)
time fidelity
0.00000000e+00 0.00000000e+00
2.16135894e-01 1.11612759e-04
7.52429193e-01 8.16588122e-04
1.29606053e+00 8.76288172e-04
1.84266188e+00 7.06435551e-04
2.40147636e+00 7.93280613e-04
2.95870895e+00 6.89534671e-04
3.50977092e+00 8.62614471e-04
产生这个
这种方法最显著的好处是,如果您要绘制大量类似的图表,则只需更改几行坐标,字体大小和样式与文档的其余部分相匹配。另一个好处是图表的大小非常容易控制,而使用 Matlab 时我总是觉得很难控制。最后,如果发生了变化,例如您决定使用不同的颜色或更正标签,那么只需快速编辑,而不是通过打开外部包重新生成整个图形。
答案2
答案3
为什么不使用pst-plot
?它是 PSTricks 软件包之一,专门用于以最小的努力绘制几乎任何东西。访问PSTricks 画廊并四处寻找pst-plot
例子。
例子:
\documentclass{article}
\usepackage{pst-plot}
\begin{document}
\begin{pspicture}(-1,-1)(6,1)
\psaxes{->}(0,0)(-0.75,-0.75)(5.75,0.75)[$x$,90][$y$,180]
\psline[linecolor=blue](1,0)(1,0.5)(5,0.5)(5,0)
\end{pspicture}
\end{document}
为了简单起见,使用 进行编译xelatex
。为了更快地进行编译,请使用latex-dvips-ps2pdf
序列。