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

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
回复
头像
fire3
帖子: 76
注册时间: 2007-05-29 18:12
来自: THU
联系:

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

#1

帖子 fire3 » 2007-05-31 23:29

原帖见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 新支持的文件格式,有很多可供选择:)
上次由 fire3 在 2007-06-10 21:46,总共编辑 1 次。
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

#2

帖子 aBiNg » 2007-06-01 19:43

纯顶一下 :wink:
头像
freshfish
帖子: 61
注册时间: 2006-08-31 12:20
来自: 香港中文大学
联系:

#3

帖子 freshfish » 2007-06-06 23:49

不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
最新的国外博士硕士信息
----------------------------
Dell Inspiron 1525
Latex Python VIM Ooo
----------------------------
理性与自由
信念与尊严
生死与超越
pengtu
帖子: 349
注册时间: 2006-09-09 0:35

#4

帖子 pengtu » 2007-06-07 16:04

freshfish 写了:不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
这个for python的好像还不错,不过也是要学python脚本,其实,数学本身就是脚本啊。
开源的里面,就没看到一个可视化函数绘图的软件。
头像
fallleaf
帖子: 694
注册时间: 2006-12-29 20:13

#5

帖子 fallleaf » 2007-06-08 16:26

labplot还说得过去
在学习linux的道路上自在而行。
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#6

帖子 xiechy » 2007-06-08 18:18

小顶一下~
不管怎样,对原创,自己写代码,写教程的同学总是支持的~
做人要实干~
ltkun
帖子: 1340
注册时间: 2006-01-10 19:09

#7

帖子 ltkun » 2007-06-08 18:59

pengtu 写了:
freshfish 写了:不喜欢gnuplot
不想另外去学它的脚本,于是我用matplotlib,python的
这个for python的好像还不错,不过也是要学python脚本,其实,数学本身就是脚本啊。
开源的里面,就没看到一个可视化函数绘图的软件。
去年这个时候我就在用k还是g里面的程序临时救急画函数图 kmplot
头像
aqua203
帖子: 283
注册时间: 2007-03-01 21:04
来自: 福建

#8

帖子 aqua203 » 2007-06-08 21:34

顶,说不定以后会用到
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#9

帖子 roylez » 2007-06-09 9:46

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

matplotlib里面好像不能做左右各一个Y轴的图,这是我用gnuplot更多的原因之一。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
pertain
帖子: 42
注册时间: 2006-06-05 22:12

#10

帖子 pertain » 2007-06-10 12:39

楼上的头像台邪恶了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#11

帖子 eexpress » 2007-06-10 15:52

画函数,有什么用哦。
都有图形界面的。
● 鸣学
头像
fire3
帖子: 76
注册时间: 2007-05-29 18:12
来自: THU
联系:

#12

帖子 fire3 » 2007-06-10 21:50

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

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