关于绘图软件的一点注记

这几天读了一些代码和几个宏包的说明文档,算是对画图有点小小的心得体会吧。

一般来说图片可以分为两大类:一是点阵图,二是矢量图。所谓点阵图,说的通俗点就是放大后会引起失真有锯齿状的图片,这类图片很常见,比如 jpg,gif,bmp  等都是点阵图格式。这类图片很容易获得,当然缺点也是非常明显的,就是图片质量不高。所谓矢量图就是可以任意放缩、坐标变换而不会丢失信息,图形不会产生锯齿效果。这类图的优点自然不用说了。绝大多数绘图软件都可以生成点阵图,生成矢量图的软件相对少一些,比如 CorelDRAW、Adobe Illustrator、Inkscape 等。

如此,绘图软件自然也可以分为两种。下面将着重介绍绘制矢量图的工具。矢量绘图软件也可以分为两类 (其实所有的绘图软件都可以这么分类): 一类是 GUI ( Graphical User Interface,图形用户界面,属于可视化 ) 的, 另一类是 CLI ( Command  lineinterface,命令行) 的,两种工具也大体代表了不同的理念。前者是 WYSIWYG  (What You See Is What You Get),所见即所得;后者是 WYTIWYG (What You Think Is What You Get),所思即所得。具体到应用上,前者以 CorelDRAW、Adobe Illustrator、Inkscape 等为代表,后者以基于 LaTeX 的各种软件或宏包为代表。本文只罗列这两类常用的软件,不涉及优劣比较。事实上,不同的软件有不同的侧重面,确实无法绝对的说哪种好哪种坏。

一、GUI

      前面已经说过 CorelDRAW、Adobe Illustrator、Inkscape 是 GUI 绘图软件中比较常见功能也最强大的软件。CorelDRAW 和 Inkscape 我都用过,它们的界面非常像,功能也相当。不同的是 CorelDRAW 是商业软件 (网上有破解版的), 而 Inkscape 是开源跨平台的软件 (目前最新版本是 0.91)。现在一直在用的就是 Inkscape,除了因为它是开源的外,最主要的原因是它支持 LaTeX 数学公式扩展,就是用 Inkscape 画图时,其中可以使用 LaTeX 命令生成漂亮的公式标注。这是其它软件不具备的 (CorelDRAW 中使用公式需要从 Mathtype 或 Word 中复制过去)。下图就是 Inkscape 的操作界面。

 二、 CLI

目前科技论文写作大都用的是 LaTeX 排版系统,尤其是投国外 SCI 杂志,他们几乎都会要求用 LaTeX书写,可能不仅是因为它完全免费、可跨平台移植,最主要的是其排版精美漂亮甚至超过了一些商业软件。LaTeX 本身也自带了一些画图功能,不过只能画一些简单的交换图等。我们可以利用一些基于 TeX 系统的宏包或工具来实现画矢量图的目的。这其中最著名的有如下四个:

1. Metapost
      2. Asymptote
      3. PGF/TiKZ
      4. Pstriks
 
       前两者属于离线做图工具;后两者属于在线做图工具。什么叫离线做图工具? 什么又叫在线做图工具? 简单来说,离线做图就是单独建立文件,然后生成 pdf  或 eps 等独立的图形文件,通过 \includegraphics 命令将图形文件嵌入到 LaTeX 文件中。 Metapost  和 Asymptote 属于这种。在线做图就是直接在 TeX 文件中输入相应宏包的绘图命令,经过处理后直接生成图形。PGF\TiKZ 和 Pstricks 属于此类。

从语法上来说,Metapost 据说其语法比较怪异,很难学的精通 (我没有用过,只是听说);Asymptote 以前我用过,它的语法类似于 C/C++ (C 语言确实牛啊),后来之所以放弃主要是因为感觉离线作图不太方便 (纯个人感受);Pstricks 基于 Postscript,据说比较强大,但是我没用过,不予置评。

从功能上来说,各有所长,Metapost 可以解方程;Asymptote 的 3D 效果很不错。这两种方式并没有优劣之别。离线做图更灵活,在线做图则更加方便,关键看个人喜好,就像比较 Vim 和 Emacs 哪个更好,我想答案只有程序员自己最明白。

下面说一下 PGF/TiKZ,这是我现在正在用的,本身 PGF/TiKZ 是 TeX 的一个扩展宏包,使用非常方便,只需在 TeX 文档的导言区加入命令 \usepackage{tikz} 就可以使用了。目前 PGF/TiKZ 可画的图形种类很多,像流程图、有限状态机图、神经网络图、二维/三维数据图等等。利用 PGF/TiKZ 的 plot 命令可以画一些不太复杂的函数图形,如果图形很复杂我们还有办法,那就是用基于 PGF/TiKZ 的另一个宏包 pgfplots (其实 PGF/TiKZ 也可以,不过 pgfplots 更强) 和其它软件 (比如 Gnuplot,R,Matlab,Mathematica等) 结合来绘图。你也许会问为什么不直接用 Gnuplot 这类软件画图呢,还搞得这么麻烦?那是因为虽然 Gnuplot,Matlab 这类软件画图方便,但是它们画出的图不好看,尤其是标注自定义性很差,这会导致图片与论文整体风格很不搭。这也许就是你看外国人的论文里图片都非常漂亮而自己画的图却不怎么好看的原因了。简单来说,以 Matlab 为例,我们可以用其强大的数据处理能力生成绘图所需要的数据,先以文件形式导出 Matlab 处理的数据( .txt 或 .dat等),这一点很容易做到,只需要几行 Matlab 命令就搞定了,然后用命令 \addplot {filename.dat} 调用之前处理好的数据供 pgfplots 使用就 ok 了,这样就会画出既漂亮又可以自己定义标注风格的矢量图了。是不是 so easy!再也不用担心我的图片了 。。。

不管是 GUI 还是 CLI 的作图工具都有各种的优点和缺点。GUI 更加直观,这正是 CLI 的缺点;CLI 画图更加精确,而 GUI 则显得有些粗糙,不是那么的精细。没有哪一类工具可以通杀所有图形,二者结合起来是很明智的选择。当用 GUI 可以方便快速的画出来时,完全没有必要用 CLI 去画,反之亦然。比如下面这个 Petersen 图用 Inkscape 就很容易画出来 (当然,用 TiKZ 也很方便)。

然而,如果是下面这幅图呢?显而易见,如果使用 Inkscape 等 GUI 工具的话是非常麻烦的。

而如果使用 TiKZ 的话只需要下面这些代码就可以完成:

 1 \documentclass{minimal}
 2 \usepackage{tikz}
 3 \usetikzlibrary{calc}
 4
 5 \begin{document}
 6 \pgfdeclarelayer{background}
 7 \pgfdeclarelayer{foreground}
 8 \pgfsetlayers{background,main,foreground}
 9 \xdefinecolor{darkgreen}{RGB}{175, 193, 36}
10 \newcounter{cntShader}
11 \newcounter{cntRoot}
12 \setcounter{cntShader}{20}
13 \def\couleur{darkgreen}
14
15 \begin{tikzpicture}
16     \foreach \y in {86,38,15}{
17         \setcounter{cntShader}{1}
18         \coordinate (a) at (0,0);
19         \coordinate (b) at (0:1);
20         \foreach \x in {1,...,\y}{%
21             \coordinate (c) at ($ (b)!1cm!270:(a) $);
22             \begin{pgfonlayer}{background}
23                 \draw[fill=\couleur!\thecntShader] (a)--(b)--(c)--cycle;
24             \end{pgfonlayer}
25             \setcounter{cntRoot}{\x}
26             \addtocounter{cntRoot}{1}
27             \node[fill=white,draw,circle,inner sep=1pt] at (c)
28                 {$\sqrt{\thecntRoot}$};
29             \coordinate (b) at (c);
30             \pgfmathsetcounter{cntShader}{\thecntShader+4}
31             \setcounter{cntShader}{\thecntShader}
32        }
33     }
34     \node[fill=white,draw,circle,inner sep=1pt] at (0:1) {$\sqrt{1}$};
35 \end{tikzpicture}
36
37 \end{document} 
时间: 2024-10-31 13:54:46

关于绘图软件的一点注记的相关文章

软件工作量的估记方法(未完成版)

软件工作量的估记有哪些方法 ================================================ > 对于这个概念我本身不是特别的熟悉,然后我自己去查了查资料我认为大概有3类估算方法,分别是基于WBS基于SLOC还有基于FP的工作量估算: >首先这种基于WBS的工作量估算方法,我个人认为应该是凭借以前做相似项目的经验去初步估计,然后再把每一项分解也同样按照自己的经验去估算时间,最后算出来的总时间和之前的初步估计做一个比较,最后得出大概的估算时间. >首先这种估

Golden.Software.Strater.v4.6.1700.Win32_64 1CD新型测井及井眼绘图软件

Golden.Software.Strater.v4.6.1700.Win32_64 1CD新型测井及井眼绘图软件Strater显示你的原始数据作为钻孔.测井.地图和横截面. Strater提供无与伦比的灵活性在设计和布局. Strater的直观用户界面点击鼠 标方便快速可视化地下数据并创建专业报告.Strater是一个强大的和创新的测井.井眼和截面绘图软件包的地质学家. 以其现代和简单易用的用户界面,Strater如此简单甚至初学者可 以创建高质量的专业表示在没有时间的地下数据.Strater

专业函数绘图软件Origin

首先:Origin软件已经是科研院所等单位的必备工作软件之一,之所以大家讨论得较少,有可能并不是其上手难度低,而是这些使用人群的学习理解能力要相对高一点吧: 其次:Excel不垃圾,但在函数绘图方面,比起Origin差远了,用垃圾来形容并不过分,可以问问任何高校老师,他们还会使用Excel出图么?那简直是自己找死.当然Origin也只是在绘图方面比Excel厉害,其它的方面还是比Excel差,本文也只是讲了绘图方面. Origin为OriginLab公司出品的较流行的专业函数绘图软件,是公认的简

几何绘图软件哪个好?

几何绘图软件哪个好? 数形结合是一种极富数学特点的信息转换的教学方法,许多数量关系方面的抽象概念和解析式,若借助于任何一种几何绘图软件都会使一些关系明朗化.简单化.动态几何绘图软件的研究始于二十世纪八十年代后期,九十年代得到大力发展和广泛应用.目前,人们了解最多.实际应用最广的几何绘图软件要数几何画板.超级画板.GeoGebra.英壬画板了.这四种软件在不同的领域各有千秋,根据不同的需求选择不同的软件才是上上之策,下面为您详细介绍这四款软件. 一.几何画板:21世纪动态几何 免费提供下载地址(h

Mac 设计师必备的设计绘图软件 推荐与下载

Mac设计师必备的设计绘图软件,为广大设计师推荐一些Mac上实用且强大的软件,使用好的软件,事半功倍,设计出精美的作品. Mac上优秀的设计类软件非常多,绝对不止这几款软件,看看以下内容,希望对你有帮助. 如有更好的设计类软件大家也可以留言推荐哦! 一.Sketch Sketch 是Mac上最强大的移动和网页应用设计工具,已经赶超PS作为首选设计工具了,尤其是在移动应用设计方面,Sketch的优点在于使用简单,学习曲线低,并且功能更加强大易用. 下载地址:https://www.scoee.co

Paintstorm Studio for mac(数字绘图软件)

Paintstorm Studio是一款好用的数字绘图软件,这款软件支持win.mac等操作系统平台,软件的主要特色就是画笔,软件提供了丰富的画笔工具,可以让用户快速设计出符合自己风格的作品.软件拥有了一个布局合理的控制面板,同时还拥有丰富的笔刷种类供用户选择,且支持自定义组合键来控制绘画,有需要的用户快快下载吧. PaintstormStudio for Mac软件介绍 Paintstorm Studio for Mac是一款可以在苹果电脑上使用的数字油画创建工具,Paintstorm Stu

AutoCAD 2019 for mac 非常好用的CAD三维设计绘图软件

macOS下用什么cad软件?mac在哪下载cad软件? AutoCAD 2019 for mac 是一款非常好用的CAD三维设计绘图软件,可应用三维建模.CAD.渲染.动画.视觉特效和数字图像. AutoCAD® 是一种计算机辅助设计 (CAD) 软件,建筑师.工程师和建筑专业人员可依靠它来创建精确的 2D 和 3D 图形使用实体.曲面和网格对象绘制和编辑 2D 几何图形及 3D 模型使用文字.标注.引线和表格注释图形使用附加模块应用和 API 进行自定义 下载地址:https://www.m

怎么快速的访问化学绘图软件文件

ChemDraw文件目录(cd-items directory)是一种特殊的目录,一般存放在ChemDraw的application文件目录中(也可放在Windows的系统文件目录中),用ChemDraw文件目录可快速访问ChemDraw文件. 1.ChemDraw文件目录 查找文件目录中的ChewDraw文件,可在Open Special 命令下的子菜单中访问,这是很有用的实际应用.例如Style Sheets等.  ChemDraw的File文件及下拉菜单 含在ChemDraw文件目录中的其

OmniGraffle绘图软件

OmniGraffle http://www.pc6.com/mac/111747.html OmniGraffle可以用来绘制图表,流程图,组织结构图以及插图,也可以用来组织头脑中思考的信息,组织头脑风暴的结果,绘制心智图,作为样式管理器,或设计网页或PDF文档的原型