Scilab绘图函数(一)

1、champ用于绘制二维矢量场图,箭头长度与该位置的场大小乘正比,如果想用箭头的颜色反映场强,则应该使用champ1函数。
具体格式为:champ(x,y,fx,fy, )
x,y用于定义矢量的位置;fx,fy用于定义相应x,y位置处的x分量和y分量大小。opt_args设置矢量场图的绘制形式,arfact用于定义剪头头部的尺寸参数,rect定义图形视窗的大小,strf是长度为3的字符串,在老式的plot2d中用于确定绘图参数,格式为"xyz",x控制标题是否现实(x=0没标题,x=1显示leg定义的标题),y控制图形的视窗的形式,取值范围为0~8,z定义绘制图形的具体参数,取值为0~5。
-->champ(-5:5,-5:5,rand(11,11),rand(11,11),rect=[-10,-10,10,10],arfact=1)

fig1-->champ(-5:5,-5:5,rand(11,11),rand(11,11),2,[-10,-10,10,10],"021")

 fig2

2、champ1用于绘制带有颜色箭头的二维矢量场图,箭头的颜色由场的强度确定,如果想用箭头长度来反映场强,则应用champ函数
具体格式为:champ1(x,y,fx,fy,[arfact,rect,strf])
-->champ1(-5:5,-5:5,rand(11,11),rand(11,11),rect=[-10,-10,10,10],arfact=2);

fig3

3、fchamp绘制二维一阶常微分方程的方向场图。
具体格式为:fchamp(f,t,xr,yr, ),f为描述常微分方程的函数或字符串,t为所选择的时间,当前没有使用,但是必须给出,xr和yr给出需要计算的网格, 的定义与champ一样

-->deff("[xdot]=derpol(t,x)",["xd1=x(2)";"xd2=-x(1)+(1-x(1)**2)*x(2)";"xdot=[xd1;xd2]"]);
-->xf=-1:0.1:1;
-->yf=-1:0.1:1;
-->fchamp(derpol,0,xf,yf)
fig4

4、errbar函数绘制二维误差曲线
具体格式为errbar(x,y,em,ep);x,y,em,ep具有相同大大小,em,ep给出对应点的最大值和最小值

-->clf();
-->t=[0:0.1:2*%pi]';
-->y=[sin(t) cos(t)];
-->x=[t t];
-->plot2d(x,y);
-->errbar(x,y,0.05*ones(x),0.03*ones(x));
fig5 

5、histplot用于绘制直方图
具体格式为
histplot(x,data, )或histplot(n,data, )
x为定义类别的矢量,x至少有2个分量,n为类别数量,data为所要分析的矢量, 与plot2d的参数一样。如果给出的是数量类别,采用等间距对数据进行分类。
-->clf
-->d=rand(1,1000,'normal');//产生随机数据
-->clf();histplot(20,d,leg='rand(1,10000,''normal'')',style=16, rect=[-3,0,3,0.5]);//根据类别数量进行绘制

fig6 6、histplot用于绘制直方图
具体格式为
histplot(x,data, )或histplot(n,data, )
x为定义类别的矢量,x至少有2个分量,n为类别数量,data为所要分析的矢量, 与plot2d的参数一样。如果给出的是数量类别,采用等间距对数据进行分类。

-->clf();
-->d=grand(1000,1,"bin",6,0.5);//产生随机数
-->c=linspace(-0.5,6.5,8);//定义分类方法
-->subplot(211);
-->histplot(c,d,style=2);
-->xtitle("normalized histogram");//默认为归一化
-->subplot(212);
-->histplot(c,d,normalization=%f,style=5);//不归一化
-->xtitle("non normalized histogram");

fig7

7、Matplot采用颜色绘制矩阵
具体格式为:Matplot(a, ),a为一个实矩阵;该函数在矩阵对应的位置上采用该位置上的矩阵制绘制一个小矩阵,如果矩阵值超出调色板定义值,该位置就不显示。
-->clf
-->Matplot([1 2 3;4 5 6]); fig8

-->clf();
-->Matplot((1:xget("lastpattern")))//xget得到画板颜色索引最大值,接着绘出所有的颜色

fig9

8、Matplot1与Matplot1相同,也是采用颜色绘制出矩阵
具体格式为Matplot1(a,rect),a为实矩阵,rect定义绘制的图形大小

-->clf();
-->ax=gca();
-->ax.data_bounds=[0,0;10,10];//定义数据边界
-->ax.box='on';//绘制外框
-->a=5*ones(11,11);
-->a(2:10,2:10)=4;
-->a(5:7,5:7)=2;//设置数据
-->Matplot1(a,[1,1,3,3]);//绘制

fig10

-->clf();
-->n=100;
-->f=gcf();
-->f.pixmap='on';//打开绘图缓冲模式,绘图操作将会在缓冲区中进行,而不是直接绘制到屏幕上
-->ax=gca();
-->ax.data_bounds=[0,0;10,10];//设置数据边界
-->ax.box='on';//绘制黑框
-->show_pixmap();//显示到屏幕上
-->for k=-n:n
-->a=ones(n,n);
-->a=3*tril(a,k)+2*a;
-->a=a+a';
-->k1=3*(k+100)/200;
-->if (k>-n) then delete(gce()), end
-->Matplot1(a,[k1,2,k1+7,9])
-->show_pixmap()
-->end

9、drawaxis绘制坐标轴
具体格式为:drawaxis([options]),options有x,y,dir,sub_int,fontsize,format_n,seg,textcolor,ticscolor,tics选项;
x,y给出标注的位置;dir为坐标轴的方向,可以为'u','r','d','I',分别代表上,右,下,左;sub_int=integer 指定坐标轴主标注间的此标注数量,fontsize=int指定坐标轴上的文字大小,format_n=string用于实现坐标轴上的数值,seg=1或0控制坐标轴的基本线段,textcolor=integer控制文字的颜色,ticscolor控制标注线的颜色tics=string控制如何给出标注。

-->clf
-->subplot(221);
-->plot2d(1:10,1:10,1,"020");
//绘制水平坐标轴
-->drawaxis(x=2:7,y=4,dir='u',tics='v');
-->drawaxis(x=2:7,dir='u',tics='v');
-->drawaxis(x=2:7,dir='d',tics='v');
-->drawaxis(x=[2,7,3],y=2,dir='d',tics='r');
-->subplot(222);
-->drawaxis(x=4,y=2:7,dir='r',tics='v');
-->plot2d(1:10,1:10,1,"020");
//绘制垂直坐标轴
-->drawaxis(x=4,y=2:7,dir='r',tics='v');
-->drawaxis(x=2,y=[2 7 3],dir='l',tics='r');
-->drawaxis(y=2:7,dir='r',tics='v');
-->drawaxis(y=2:7,dir='l',tics='v');
-->subplot(223);
-->plot2d(1:10,1:10,1,"020");
//自定义标注字符串
-->drawaxis(x=2:7,y=8,dir='u',tics='v',val='A'+string(1:6));
-->drawaxis(x=8,y=2:7,dir='r',tics='v',val='B'+string(1:6));
-->subplot(224);
-->plot2d(1:10,1:10,1,"020");
自定义标注及颜色
-->drawaxis(x=[2,5,0,3],y=9,dir='u',tics='i');
-->drawaxis(x=9,y=[2,5,0,3],dir='r',tics='i',sub_int=5);
-->drawaxis(x=2:7,y=4,dir='u',tics='v',fontsize=10,textcolor=9,ticscolor=7,seg=0,sub_int=20);

fig11

10、bar绘制条形图
具体格式:bar([h],x,y,[,width,[,color[,style]]]),h为轴句柄;x为条形图的位置,y为条形图高度,width为条形图的宽度,条形图颜色,style为条形图风格。
-->subplot(221);
-->y=[1 -3 5];
-->bar(y,0.5,'yellow');//宽度0.5,黄色的条形图
-->subplot(222);
-->x=[1 2 5];
-->y=[1 -5 6;
-->3 -2 7;
-->4 -3 8];
-->bar(x,y);//定义位置的条形图,不同列为不同条形图高度,颜色自动设置
-->subplot(223);
-->x=[1 2 5];
-->y=[1 4 7;2 5 8;3 6 9];
-->bar(x,y,'stacked');//层叠在一起的条形图
-->subplot(224);
-->x=[1 2 5];
-->y=[1 4 7;2 5 8; 3 6 9];
-->bar(x,y,0.2,'green');//绿色的条形图

fig12

11、barh用于绘制水平方向条形图,其参数与bar函数一样
具体格式为:barh([h],x,y,[,width,[,color[,style]]])

-->subplot(221);
-->y=[1 -3 5];
-->barh(y,0.5,'yellow');
-->subplot(222);
-->x=[1 2 5];
-->y=[1 -5 6;3 -2 7;4 -3 8];
-->barh(x,y);
-->subplot(223);
-->x=[1 2 5];
-->y=[1 4 7;2 5 8;3 6 9];
-->barh(x,y,'stacked');
-->subplot(224);
-->x=[1 2 5];
-->y=[1 4 7;2 5 8;3 6 9];
-->barh(x,y,'green');

fig13

12、

grayplot采用颜色绘制一个二维表面
具体格式为:grayplot(x,y,z, );x,y为格点,z为格点处的值,opt_args有strf,rect,nax选项

fgrayplot采用颜色绘制指定函数的二维表面
具体格式为:fgrayplot(x,y,f, );x,y为格点,f为格式y=f(x,y)自定义或内置的函数名

Sgrayplot采用颜色绘制平滑的表面
具体格式为:Sgrayplot(x,y,z [,strf,rect,nax,zminmax,colminmax,mesh,colout]);x,y为格点,z为格点位置上的函数值;strf与老式plot2d函数中的含义一样;zminmax为2个分量的向量,colminmax为2各分量的向量,mesh为布尔值,默认为%f,colout为2个分量的向量。

Sfgrayplot采用颜色绘制指定函数的二维表面
具体格式为:Sfgrayplot(x,y,f [,strf,rect,nax,zminmax,colminmax,mesh,colout]);x,y为格点,z为格点位置上的函数值;strf与老式plot2d函数中的含义一样;zminmax为2个分量的向量,colminmax为2各分量的向量,mesh为布尔值,默认为%f,colout为2个分量的向量。

colorbar(umin,umax,[,colminmax,fmt])绘制颜色条
umin和umax为实数,fmt为用于表述颜色调渐进风格的字符串。如果该函数在plot3d,fec,Sgrayplot等函数之前调用则颜色调不属于该视窗,因此进行旋转,放大等操作时颜色调不会随着改变。

plot3d绘制三维表面
具体格式为:plot3d(x,y,z, ),xy为格点,z为个点上的值
plot3d(xf,yf,zf, ),xf,yf,zf为面元的顶点值
plot3d(xf,yf,list(zf,colors), ),xf,yf,zf为面元的顶点值,而colors为n个面元的颜色值

plot3d1采用颜色绘制三维表面
具体格式为:plot3d1(x,y,z, ),xy定义格点,z为格点位置上的值
            plot3d1(xf,yf,zf, ),xf,yf,zf定义构成表面的面元,如果有n个面元,而每个面元由nf点所确定,则其大小为(nf,n)。
theta,alpha为观察点的角度值;elg为每个轴的标注;flag=[mode,type,box],mode确定面元边界及颜色,type和box确定视窗绘制形式。

plot3d2绘制由矩形面元构成的三维表面
具体格式为plot3d2(x,y,z, ),x,y,z为面元列表,一个面元的x坐标由x(i,j),x(i+1,j+1),x(i+1,j)和x(i,j+1)确定

plot3d3采用网格线绘制由矩形面元确定的三维表面
具体格式为:plot3d3(x,y,z, )

genfac3d用于计算三维表面的面元
具体格式为:[xx,yy,zz]=genfac3d(x,y,z,[mask]);xx,yy,zz构成三维表面各个面元定点的坐标值,面元由四个顶点确定,xy为格点,z为格点上的值;与z一样大小的用于选择需要的面元位置。

-->x=linspace(0,1,81);
-->z=cos(2*%pi*x)'*sin(2*%pi*x);
-->zm=min(z);zM=max(z);
-->xset("colormap",jetcolormap(64));
-->colorbar(zm,zM);
-->subplot(211);
-->Sgrayplot(x,x,z);
-->xtitle("using Sgrayplot");
-->subplot(212);
-->grayplot(x,x,z);
-->xtitle("using grayplot");

1

-->x = linspace(0,1,81);
-->z = cos(2*%pi*x)'*sin(2*%pi*x);
-->zm = min(z); zM = max(z);
-->zz = abs(0.5*cos(2*%pi*x)'*cos(2*%pi*x));
-->zzm = min(zz); zzM = max(zz);
-->drawlater();//绘制于缓冲区
-->subplot(221);
-->colorbar(zm,zM);
-->Sgrayplot(x,x,z,strf="031",rect=[0 0 1 1]);//绘制二维表面
-->xtitle("a Sgrayplot with a colorbar");
-->subplot(222);
-->colorbar(zm,zM);
-->plot3d1(x,x,z);//绘制三维表面
-->xtitle("a plot3d1 with a colorbar");
-->subplot(223);
-->colorbar(zzm,zzM);
-->plot3d1(x,x,zz);//绘制三维表面
-->xtitle("a plot3d1 with a colorbar");
-->subplot(224);
-->colorbar(zzm,zzM);
-->Sgrayplot(x,x,zz,strf="031",rect=[0 0 1 1]);//绘制二维表面
-->xtitle("a Sgrayplot with a colorbar");
-->drawnow();//显示结果

1

-->clf
-->x=linspace(0,1,81);
-->zz=abs(0.5*cos(2*%pi*x)'*cos(2*%pi*x));
-->zzm=min(zz);zzM=max(zz);
-->[xf,yf,zf]=genfac3d(x,x,zz);
-->nb_col=64;
-->xset("colormap",hotcolormap(nb_col));
-->drawlater();
-->colorbar(zm,zM,[1,nb_col],fmt="%.1f");
-->nbcol=xget("lastpattern");
-->zcol=dsearch(zf,linspace(zzm,zzM,nb_col+1));
-->plot3d(xf,yf,list(zf,zcol),flag=[-2 6 4]);
-->xtitle("a plot3d with shaded interplated colors");
-->drawnow();
-->xselect();
1

-->clf
-->subplot(221);
-->t=[0:0.3:2*%pi]';
-->z=sin(t)*cos(t');
-->plot3d(t,t,z);//采用格点+值的方式绘制
-->[xx,yy,zz]=genfac3d(t,t,z);
-->subplot(222);
-->plot3d(xx,yy,zz);//采用面元绘制
-->subplot(223);
-->plot3d([xx xx],[yy yy],[zz 4+zz]);//采用面元同时绘制两个三维表面
-->subplot(224);
-->plot3d(1:10,1:20,10*rand(10,20),alpha=35,theta=45,flag=[2 2 3]);//设置观察角度

1

-->subplot(221);
-->deff("[x,y,z]=sph(alp,tet)",["x=r*cos(alp).*cos(tet)+orig(1)*ones(tet)";"y=r*cos(alp).*sin(tet)+orig(2)*ones(tet)";"z=r*sin(alp)+orig(3)*ones(tet)"]);
-->r=1;
-->orig=[0 0 0];
-->[xx,yy,zz]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
-->plot3d(xx,yy,zz);
-->f=gcf();
-->f.color_map=hotcolormap(128);
-->subplot(222);
-->r=0.3;orig=[1.5 0 0];
-->[xx1,yy1,zz1]=eval3dp(sph,linspace(-%pi/2,%pi/2,40),linspace(0,%pi*2,20));
-->cc=(xx+zz+2)*32;cc1=(xx1-orig(1)+zz1/r+2)*32;
-->plot3d1([xx xx1],[yy yy1],list([zz,zz1],[cc cc1]),theta=70,alpha=80,flag=[5 6 3]);//同时绘制两个表面
-->subplot(223);
-->t=[0:0.3:2*%pi]';z=sin(t)*cos(t');
-->[xx,yy,zz]=genfac3d(t,t,z);
-->plot3d([xx xx],[yy yy],list([zz zz+4],[4*ones(1,400) 5*ones(1,400)])); //固定颜色
-->subplot(224);
-->plot3d([xx xx],[yy yy],list([zz zz+4],[64*rand(1,400) 64*rand(1,400)]));//随机颜色

1

-->v=linspace(0,2*%pi,20);
-->x=cos(u)'*cos(v);
-->y=cos(u)'*sin(v);
-->z=sin(u)'*ones(v);
-->plot3d2(x,y,z);
-->e=gce();//获取当前图形实体
-->e.color_mode=4;
-->f=e.data;
-->TL=tlist(["3d","x","y","z","color"],f.x,f.y,f.z,10*(f.z)+1);
-->e.data=TL;
-->e.color_flag=2;//自定义颜色

1

-->u=linspace(-%pi/2,%pi/2,40);
-->v=linspace(0,2*%pi,20);
-->x=cos(u)'*cos(v);
-->y=cos(u)'*sin(v);
-->z=sin(u)'*ones(v);
-->subplot(211);
-->plot3d3(x,y,z);
-->subplot(212);
-->plot3d3(x,y,z);
-->e=gce();
-->e.visible='off';//关闭网格显示

1

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值