Introduce to the GNUPlot¶
本文通过学习马欢[1]的Gnuplot系列教程后,练习处理我的计算数据完成。
文中代码均可在GNUPlot Shell中运行完成。
使用帮助¶
安装好GnuPlot后,运行gnuplot即进入命令模式,可以使用命令help查看帮助信息:
gnuplot> help
会出现一段说明文字,操作与用less查看文件一样。用’q‘退出后会提示相关Topic,与绘制2D图形相关的是”plotting“,输入”plotting“即可看到相关的帮助信息,同样,退出后,你会看到更多的Command或Topic信息,输入相应项就可以查看帮助了。如果想要返回上一级帮助主题,连续再次回车即可,不过不会再出现对应的信息列表了(比较麻烦,也有可以是我还不熟悉)。
Help topic:plotting
绘图命令plot¶
GNUPlot的功能强大,控制灵活。目前我只用到plot命令以绘制一些数据。下面给出一些例子:
绘制一个简单的函数¶
绘制sin(x)曲线:
# 文件模式。也可以直接在GNUPlot Shell中运行
plot sin(x)
执行上面的命令后,会弹出绘制好sin(x)曲线的窗口。X轴方向范围为[-10,10],这个默认范围。
在图形的右上角有一个碍眼的图例(害的我作点状图时想了好久,图上为什么多了一个点)。如果图上有好几条曲线,图例就是必须的了。gnuplot提供的相应的设定参数来控制它的行为:
# 关闭图例
unset key
# 关闭默认图例title
set noautotitle
# 开启图例外框,使用默认的边框线型和颜色
set box
# 设定图例所在位置,如右下
set right bottom
# 其它更多设置请查看帮助
help set
# Subtopic of set: key
从文件中读取数据并绘制¶
plot命令可以从CSV格式文 件中直接读取数据并作图。数据文件summary如下:
执行命令:
plot "summary" using 1:2
上面的命令即:利用文件”summary”的第一列作为x, 第二列作为*y*作图,默认为点状图,可以利用选项with lines来作出线状图,如:
plot "summary" using 1:2 with lines
可是gnuplot就会简单的将图上的点用直线连接起来,图形极可能不光滑。
绘制光滑的曲线¶
如果你有一系列坐标,如果用gnuplot直接绘制,曲线是不光滑的,数学上有一系列方法根据已知数据来拟合光滑曲线的方法,如插值法,外推法等,gnuplot也提供一些简单的功能来光滑我们的曲线。
利用plot命令中的”smooth“属性来设定一些参数就可以实现,如:
plot "summary" using 1:2 smooth csplines
你会发现你的图形已经变得光滑,关于”smooth“的详细参数,请查看帮助信息
设定坐标轴信息¶
自定义坐标的范围,标签等
set xrange [1:10.5]
set yrange [-13:0.2]
set xlabel "X label"
set ylabel "Y label"
# 其它一些更详细的设定,如:刻度间隔等请查看帮助
其它对标签还有其它很多属性,如字体等:
set xlabel "X label" font "Monospace,16"
将x轴的标签文本字体设定为”Monospace”, 大小为16
输出到文件¶
最终我们希望将图形输出到文件,可能是图片,latex等格式,gnuplot一概可以搞定。
设定输出文件格式¶
gnuplot支持N多种输出文件格式,如图形(png, jpg, tiff, emf等), latex, epslatex等,有好些我都不知道。下面的命令将输出emf矢量图片:
# enhanced属性允许你在标签中使用类latex格式的文本
set term emf enhanced
set output "summary.emf"
plot 'summary' using 1:2 linewidth 2 smooth csplines
set output
运行完后你会发现当前目录下生成了一个”summary.emf“图形文件