Reading "gnuplot in action" by Philipp K Janert (chinese)
reset set terminal pngcairo size 512,320 set output "output_graph.png" set xtics rotate by -45 # Set the x and y axis labels set xlabel "Date" set ylabel "Price" # Set the title of the graph set title "Date vs Price" set yrange [-10:10] plot sin(x)

最近我读完了“Gnuplot in action”,Philipp K Janet著。 在这篇文章我要写出我对这本书的看法。 如果你感觉有用或者有意思,请你们点赞。
1. 前言
这本书属于我的“技术书系列”。 我从一开始就想要跟电脑对话,所以组成了一系列书目+比较宽泛的介绍电脑文化的各个方面。 这系列书目包含赛博空间相关的各种书,其中有:日常任务和自动化,网络交流和沟通,软件工程,数据分析,写作辅助,图片,听觉和言语相关的书。 然而因为每个领域都很广阔,没办法阅读所有相关的资料,就需要很谨慎的选择读什么。
我选了gnuplot是因为gnuplot是最老且健在绘图软件。 作为最老的而且最容易适应意料之外的电脑,gnuplot影响了几乎所有的能绘曲线图的程序。 的确,如果你用过MATLAB或者Python.Matplotlib,会情不自禁感觉“跟gnuplot很像”。
那为什么我没选gnuplot的官方说明书学习? 实际上有两个原因:
- gnuplot的官方资料真的不适合自学。 它包括整个gnuplot的参考信息,介绍每个命令、选项和输出终端,但是信息密度很高,而且没有任何情节,不告诉读者“如何尽快开始绘图”以及哪一个选项更重要。
- 实际上我比较喜欢阅读有经验的专家工程师的主观观念。 官方资料可能更准确,但是技术书经常除了单纯事实以外也包含难定义的工程师经验。
我看完这本书的时候还发现了第三个原因,虽然打算读书的时候没考虑它。 这本书除了gnuplot以外,还包括很多定性分析的知识。
2. 书籍的构成
这本书大致分为三部分:
- gnuplot的介绍
- gnuplot的不明显细节
- 定性分析技巧
其实甚至如果你对gnuplot不感任何兴趣,第13和第14章仍值得阅读,因为作者比较好地介绍如何使用图形办法从数据提取被隐藏的含义。 在那里代码本身不是那么重要,你可以用MATLAB或Python重现它。
gnuplot到底使用什么语言? 答案是:gnuplot带有自己的语言。 此语言很简单,但却是图灵完备的语言,现在拥有所有常见的程序语言基元:条件、循环、数组。 不幸的(或者幸运的?),它的数据分析功能不是很强,所以最好用其它更适合的语言准备数据文件,然后用gnuplot绘图。
我在我的实验里用过GNU bash,因为它是最常见的以及最容易学习的语言,但是我不能推荐读者这么做。 Bash还是不太适合做数据分析。 你可以把数据从任何语言倒入gnuplot的默认输入口。
与官方的资料不同,这本书很逐步介绍内容,多次使用不同的说法介绍同样的内容。 这既是长处又是短处,因为这本书有点长,大概需要个星期阅读。
关于gnuplot本身我是有点不确定的。 的确,gnuplot的功能很多。 它能绘数据文件、函数(内建的和自定义的)、多个绘线风格、二维和三维图、彩色和黑白的图,而且支持很多输出格式以及互动性终端(比如windows)。 但是我感觉MATLAB或者Matplotlib的绘图功能一点都不亚于gnuplot的,并且不需要用户学习另一个程序语言。
在总结中我要说:“Gnuplot in Action”扩大了我的观念,令我更深地理解数据分析和图形编程。 能不能给每个人推荐阅读它? 不确定。
3. 美貌
在书评末尾我要写几句关于gnuplot支持的图表类型的话。
时间序列

multiplot

直方图/矩形图

多变量分布

多元图

饼形图
饼形图容易误导读者,请小心使用.

讨论
虽然gnuplot支持比较多的图表类型,但它的默认外表不是很好看. 颜色,以及颜色系列不那么帮忙读者分辨曲线,而且不太好看. 页边空白太窄了,默认字体不一定支持所有的字符,请谨慎使用.