octave画图篇入门

原创 2018-02-14 17:15 阅读(866)次

    

基本介绍    

图形对象    

root

figure

axes

line

text

image

patch

surface

light

特殊方法

最基本的画图   



基本介绍

octave  可以绘制很多图形,有助于理解数学计算,矩阵计算等问题。

这里以windows为例,安装好octave后,启动octave-cli.exe ,plot是octave的绘图命令。

特别注意: octave 4提供了Qt/OpenGL, fltk/OpenGL, gnuplot 三种绘图系统。前两者是新版本提供的,但同时精度不如gnuplot,我在win10 64位使用的时候,出现了如下错误:

octave GL2PS warning: Unknown token in buffer

应该是默认绘图系统的不兼容,可以使用如下方法解决:

在octave的命令行中输入,切换成gnuplot绘图系统即可

>graphics_toolkit('gnuplot') 

只要几条命令就能画出如下的图

x = -10:0.1:10;
plot (x, sin (x));
xlabel ("x");
ylabel ("sin (x)");
title ("Simple 2-D Plot");







图形对象


图形的原始对象类型有  figure, axes, line, text, patch, surface, text, image, and light.  他们都是为了控制图像display的,都是class graphics_handle的对象。例如plot方法返回的就是figure对象,subplot返回的是axes对象。

这些对象有相互的层级关系,从上到下是 root -> figure  -> axes -> line, text, patch, surface, text, image, and light。

patch是2d的多边形, surface是3d的平面,其他字面意思应该都能理解。

用上面这些对象的同名函数就可以创建出基本对象,而且新建出来的对象会变成当前默认对象的子对象。

比如如果有一个axes被hold on, 那新建的line就会是这个axes的子对象。新建的axes对象会默认属于root 0对象的子对象。

代码如下:

f = axes();
l = line();


显然line会放进了axes中.

如果你不想这种默认的父子关系关联对象,可以用newplot 先画一个figure 和axes,再用fill(移动多边形)等方法移动子对象关联。类似方式有一些高级方法,请查阅api。



root

最顶层,有figure的父层,索引是0。

get(0)
可以获取root对象的属性




figure

一个图形窗口

f1 = figure();
f2 = figure();
这会创造2个图像,f1=1 ,f2 =2 分别代表图像的index



axes

一组轴,是figure的子层,是text,line等的父级

a1 = axes();
这行代码跟着上面的,会发现在figure2中出现的一个直角坐标。但figure1并没有出现。需要关闭figure2,再次输入上面的指令才会在figure1中出现直角坐标。




line

2D或者3D的一条线

line([3,4],[5,7])
这会在上面的图中出现一条经过3,5 和4,7 两个点的直线。

注意这里x,y的2个矩阵,是分别代表2个点的x坐标和y坐标,而不是2个点的坐标。




text

文本注释



image

x = [0;3;4];
y = [5;7;9];
patch(x,y,"r")

位图



patch

多边形,目前只适用2d

x = [0;3;4];
y = [5;7;9];
patch(x,y)
会生成如图的多边形,注意x和y需要是一个M*1的矩阵,而不是一个1*M的矩阵。







surface

平面,目前只适用3D



light

在patch和surface的照明效果


特殊方法

ishandle方法用来判断是不是grahics_handle。

>ishandle(plot(x,y))

会得到返回 

ans = 1



get 方法可以来获取grahics_handle的type

>f = figure();
>get(f,"type")

figure()会返回当前打开的图形的index,从1开始,get(f,"type")会得到 ans = figure.

index 0是root figure, 可以通过如下代码证明

>get(0,"type")
返回

ans = root



plot(x,y)
plot的最基本方法就是分别以x作为x轴的集合,y作为y轴的集合,作图

plot(y)
plot单参数方法是以y为y轴坐标,x轴用1到y集合的个数

plot (y, property, value, …)
plot (x, y, property, value, …)
需要添加属性,就是将属性和值用逗号隔开跟在x,y后面


本站作品的版权皆为作品作者所有。

本站文字和内容为本站编辑或翻译,部分内容属本站原创,所以转载前务必通知本站并以超链接形式注明内容来自本站,否则以免带来不必要的麻烦。

本站内容欢迎分享,但拒绝有商业目的的转载!