分页: 1 / 1

[分享]gnuplot做函数图入门介绍

发表于 : 2007-05-31 23:29
fire3
原帖见fire3-简要介绍gnuplot绘函数图

计算机图形学有个小作业,需要画一个函数的图像,我瞬间想到了几种方法:
matlab
maple

mathmatica
gnuplot
metapost
octave
前三个大软件,动用起来有用牛刀杀鸡之陷,再者说用的都是D版,不大光明磊落。用metapost语言也是一个选择,但是不够简单灵活,用octave当然也行,虽说是自由软件,但是同样是把牛刀,所以就决定祭出GNU画图必备工具gnuplot。

首先是安装,我自己用的ubuntu,安装再简单不过了

代码: 全选

sudo apt-get install gnuplot gnuplot-doc

作业很简单,画这样一个函数: r(t)=(t^2-2t+1,t^3-2t^2+t)和y(t)=(2t+1,t^3),t是从0到1。
这样简单的函数作图是gnuplot最擅长不过的了。

写上这样一个plot.dem文件先:

代码: 全选

set parametric #参数化作图
set dummy t #设置参数作图的自由变量(独立变量)
set autoscale #自动缩放
set samples 160 #采样率 默认为100 

set title "" #标题设置 
set key box 
set key below #标题等信息的位置
set trange [0.00001:1]  #t的范围

 plot  t*t-2*t+1,t*t*t-2*t*t+t title "(t^2-2t+1,t^3-2t^2+t)" #就是这个画图:)

pause -1 "Hit return to continue" #防止窗口一闪就没了

plot t*t+1,t*t*t title "(2t+1,t^3+4t+1)" #再画一张!

pause -1 "Hit return to continue" #再停

plot t*t+1,t*t*t, t*t-2*t+1,t*t*t-2*t*t+t #again
pause -1 "Hit return to continue" #pause again

然后在终端里运行:

代码: 全选

gnuplot plot.dem 

三张漂亮的图片就出来了,方便快捷吧!

等等,我们要提交作业,不能只打印到屏幕上,要有图像文件啊,什么?截图阿,太土了,更重要的是,太小看我们的gnuplot了啊。千万不能那样干:)

我们在plot之前加上一句这个

代码: 全选

set terminal postscript eps color lw 1 “Helvetica” 20 

如果想让线条粗些,可以修改 lw 后面的 1,不信改成100你试试:)

然后再加上一句这个来设置输出文件:

代码: 全选

set out ‘a.eps’ 
现在文件是这个样子:

代码: 全选

set parametric #参数化作图
set dummy t #设置参数作图的自由变量(独立变量)
set autoscale #自动缩放
set samples 160 #采样率 默认为100 
set title "" #标题设置 

set key box 
set key below #标题等信息的位置
set trange [0.00001:1]  #t的范围
set terminal postscript eps color lw 1 "Helvetica" 20
set out 'a.eps'

plot t*t-2*t+1,t*t*t-2*t*t+t title "(t^2-2t+1,t^3-2t^2+t)" #就是这个画图:)
pause -1 "Hit return to continue" #防止窗口一闪就没了

set out 'b.eps'
plot t*t+1,t*t*t title "(2t+1,t^3+4t+1)" #再画一张!

pause -1 "Hit return to continue" #再停

set out 'c.eps'
set title ""
plot t*t+1,t*t*t, t*t-2*t+1,t*t*t-2*t*t+t #again
pause -1 "Hit return to continue" #pause again
运行后就会生成eps图片了,矢量图片,可以任意缩放哦:)没用过eps?就听说过gif,jpg啥的?呵呵,没关系,不想用这样的矢量图也可以:

代码: 全选

set terminal jpeg (png ) 等等都可以 
大家可以看看gnuplot4.0新支持的文件格式,和gnuplot4.2 新支持的文件格式,有很多可供选择:)

发表于 : 2007-06-01 19:43
aBiNg
纯顶一下 :wink:

发表于 : 2007-06-06 23:49
freshfish
不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的

发表于 : 2007-06-07 16:04
pengtu
freshfish 写了:不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
这个for python的好像还不错,不过也是要学python脚本,其实,数学本身就是脚本啊。
开源的里面,就没看到一个可视化函数绘图的软件。

发表于 : 2007-06-08 16:26
fallleaf
labplot还说得过去

发表于 : 2007-06-08 18:18
xiechy
小顶一下~
不管怎样,对原创,自己写代码,写教程的同学总是支持的~
做人要实干~

发表于 : 2007-06-08 18:59
ltkun
pengtu 写了:
freshfish 写了:不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
这个for python的好像还不错,不过也是要学python脚本,其实,数学本身就是脚本啊。
开源的里面,就没看到一个可视化函数绘图的软件。
去年这个时候我就在用k还是g里面的程序临时救急画函数图 kmplot

发表于 : 2007-06-08 21:34
aqua203
顶,说不定以后会用到

发表于 : 2007-06-09 9:46
roylez
freshfish 写了:不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
我gnuplot和matplotlib都用,不过matplotlib少些,gnuplot有时也是用python-gnuplot来调用的。

matplotlib里面好像不能做左右各一个Y轴的图,这是我用gnuplot更多的原因之一。

发表于 : 2007-06-10 12:39
pertain
楼上的头像台邪恶了。

发表于 : 2007-06-10 15:52
eexpress
画函数,有什么用哦。
都有图形界面的。

发表于 : 2007-06-10 21:50
fire3
nkzealot 写了:
freshfish 写了:不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
我gnuplot和matplotlib都用,不过matplotlib少些,gnuplot有时也是用python-gnuplot来调用的。

matplotlib里面好像不能做左右各一个Y轴的图,这是我用gnuplot更多的原因之一。
matplotlib,这个我还没用过:)找时间用用:)
不过最近画了几个图都是用的maple ,哈哈,因为公式是用maple推导的,发现它的smartplot挺好用:)