科学网

 找回密码
  注册

tag 标签: 图形

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

[转载]matlab图形中加latex
linpandr 2011-12-13 22:39
一般可以直接使用latex code title(‘\lambda’) 但是有些函数不能用,比如\sqrt{}。可以这么解决: title('$\sqrt{f}$','Interpreter','latex') 有些地方直接不能用,比如legend,但是可以这么解决 legend({'$\lambda$'},'Interpreter','latex') tick上不能用,用format_ticks()函数 format_ticks(gca,{x轴上放的东西},{y轴上放的东西},{x轴的哪些位置上放东西},{y轴的哪些位置上放东西},旋转文字角度x轴,旋转文字角度y轴,文字离轴距离,性质,参数)。 可选参数,旋转文字角度x轴,旋转文字角度y轴,文字离轴距离, 缺省全部是0。 性质和参数可选,常用的都可以用。比如’FontSize’,100(大了点儿哈。。。) y轴上放的东西的格式为{’$a$’,’$b$’……},这里的$必不可少。 可以只改x轴,只改y轴的时候x轴有变化,暂时不知道怎么解决。 重新修改了下程序,好像是解决了,不知道对不对。 format_ticks(gca,{}, {y轴上放的东西}, ) 在需要的时候可能会用到字符串加数字的组合,比如 for i = 1:10 figure plot(s(i,:)) title( ) end 如何将latex也加入其中: title( ,'Interpreter','latex','FontSize',25) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% BEGIN HEADER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Name: format_tick.m % %Usage: = ... % format_tick(h,tickx,ticky,tickposx,tickposy,rotx,roty,offset,... % varargin); % %Description: Replace or appends XTickLabels and YTickLabels of axis handle % h with input tickx and ticky array % %***NOTE!***: BE SURE TO DELETE ANY PREVIOUS TEXT OBJECTS CREATED BY THIS % FUNCTION BEFORE RUNNING THIS ON THE SAME FIGURE TWICE % %Required Inputs: % h : handle of axis to change tick labels (can use gca) % tickx : cell array of tick labels or string to append to current % labels % (Defaults to appending degree symbols if not input) % %Optional Inputs % ticky : cell array of tick labels or string to append to current % labels (Can use or not specify to ignore) % tickposy : Vector of y positions where you want the tick labels % (Can use or not specify to ignore) Default = 0.0 % roty : Number of degrees to rotate y tick labels % (Can use or not specify to ignore) Default = 0.0 % %Optional Inputs:% % Any standard text formatting parameters such as % 'FontSize','FontWeight',etc. % Use the same way you would in a set command after putting % in the required input values. % %Outputs: % hx: handle of text objects created for XTickLabels % hy: handle of text objects created for YTickLabels % %Function Calls: % None % %Required Data Files: % None % % %Example: % ;Example 1: Append Degree Symbols to X-Axis of a Plot % figure; % plot(1:10,1:10); % = format_ticks(gca); % % ;Example 2: Append Degree Symbolts to X and Y Axes of a Plot % figure; % plot(1:10,1:10); % = format_ticks(gca,'^{\circ}','^{\circ}'); % % ;Example 2: Append Degree Symbolts to X and Y Axes of a Plot and % ; put a 45 degree tilt on them % figure; % plot(1:10,1:10); % = format_ticks(gca,'^{\circ}','^{\circ}', ,45,45); % % ;Example 3: Make a plot with fractions on the x tick labels % figure % plot(1:10,1:10); % = format_ticks(gca,{'$1$','$2\frac{1}{2}$','$9\frac{1}{2}$'},... % ); % % ;Example 4: Make a plot with degrees on y tick label and fractions % ; on x % figure % plot(0:10,0:10); % = format_ticks(gca,... % {'$0$','$2\frac{1}{2}$','$5$','$7\frac{1}{2}$','$10$'},... % '$^{\circ}$', , ,... % 'FontSize',16,'FontWeight','Bold'); % %Change Log: % 08/19/2007: Origin Version Created by Alex Hayes % ( hayes@gps.caltech.edu ) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% BEGIN FUNCTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function = ... format_ticks(h,tickx,ticky,tickposx,tickposy,rotx,roty,offset,varargin) %define axis text offset (percentage of total range) if ~exist('offset','var'); offset = 0.02; elseif length(offset) == 0; offset = 0.02; end; %make sure the axis handle input really exists if ~exist('h','var'); h = gca; warning( ); elseif length(h) == 0; h = gca; warning( ); elseif ~ishandle(h(1)) warning( ); h = gca; end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%BEGIN: FIRST THE X-AXIS TICK LABELS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %fix the XTickLabels if they have been erased in the past if length(get(h,'XTickLabel'))==0; set(h,'XTickLabel',get(h,'XTick')); end; %set the xtick positions if entered if exist('tickposx','var'); if length(tickposx) 0; set(h,'XTick',tickposx); end; tickposx = get(h,'XTick'); set(h,'XTickLabel',tickposx); end; %make sure the xtick positions are in the xlimit range if exist('tickposx','var'); if length(tickposx) 0; lim = get(h,'XLim'); if lim(1) min(tickposx); lim(1) = min(tickposx); end; if lim(2) max(tickposx); lim(2) = max(tickposx); end; set(h,'XLim',lim); end; end; %get the tick labels and positions if the user did not input them if ~exist('tickx','var'); tickx = get(h,'XTickLabel'); if ischar(tickx); temp = tickx; tickx = cell(1,size(temp,1)); for j=1:size(temp,1); tickx{j} = strtrim( temp(j,:) ); end; end; % append = '^{\circ}'; append = ''; for j=1:length(tickx); tickx{j} = ; end; elseif length(tickx) == 0; tickx = get(h,'XTickLabel'); if ischar(tickx); temp = tickx; tickx = cell(1,size(temp,1)); for j=1:size(temp,1); tickx{j} = strtrim( temp(j,:) ); end; end; % append = '^{\circ}'; append = ''; for j=1:length(tickx); tickx{j} = ; end; elseif isstr(tickx); append = tickx; tickx = get(h,'XTickLabel'); if ischar(tickx); temp = tickx; tickx = cell(1,size(temp,1)); for j=1:size(temp,1); tickx{j} = strtrim( temp(j,:) ); end; end; if strcmp(append(1),'$'); for j=1:length(tickx); tickx{j} = ; end; else; for j=1:length(tickx); tickx{j} = ; end; end; elseif ~iscell(tickx ); warning( ); return; end; %find out if we have to use the LaTex interpreter temp = tickx{1}; if strcmp(temp(1),'$'); latex_on = 1; else; latex_on = 0; end; %erase the current tick label set(h,'XTickLabel',{}); %get the x tick positions if the user did not input them if ~exist('tickposx','var'); tickposx = get(h,'XTick'); elseif length(tickx) == 0; tickposx = get(h,'XTick'); end; %get the y tick positions if the user did not input them if ~exist('tickposy','var'); tickposy = get(h,'YTick'); elseif length(tickposy) == 0; tickposy = get(h,'YTick'); end; %set the new tick positions set(h,'YTick',tickposy); set(h,'XTick',tickposx); %check the lengths of the xtick positions and xtick labels l1 = length(tickx); l2 = length(tickposx); if l1==0; set(h,'XTickLabel',tickx); end; if l1~=l2; disp( ); disp( ); if l2 l1; warning( ); else; warning( ); end; l3 = min( ); tickx = tickx{1:l3}; tickposx = tickposx(1:l3); end; %set rotation to 0 if not input if ~exist('rotx','var'); rotx = 0; elseif length(rotx) == 0; rotx = 0; end; %Convert the cell labels to a character string %tickx = char(tickx); tickx = cellstr(tickx); %Make the XTICKS! lim = get(h,'YLim'); if min(tickposy) lim(1); lim(1) = min(tickposy); end; if max(tickposy) lim(2); lim(2) = max(tickposy); end; if rotx == 0; if latex_on; hx = text(tickposx,... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposx),1),... tickx,'HorizontalAlignment','center',... 'VerticalAlignment','top','rotation',rotx,'interpreter','LaTex'); else; hx = text(tickposx,... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposx),1),... tickx,'HorizontalAlignment','center',... 'VerticalAlignment','top','rotation',rotx); end; elseif rotx 0; if latex_on; hx = text(tickposx,... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposx),1),... tickx,'HorizontalAlignment','left','interpreter','LaTex',... 'VerticalAlignment','middlefi','rotation',rotx); else; hx = text(tickposx,... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposx),1),... tickx,'HorizontalAlignment','left',... 'VerticalAlignment','middle','rotation',rotx); end; else; if latex_on; hx = text(tickposx,... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposx),1),... tickx,'HorizontalAlignment','right','interpreter','LaTex',... 'VerticalAlignment','middle','rotation',rotx); else; hx = text(tickposx,... repmat(lim(1)-offset*(lim(2)-lim(2)),length(tickposx),1),... tickx,'HorizontalAlignment','right',... 'VerticalAlignment','middle','rotation',rotx); end; end; %Get and set the text size and weight set(hx,'FontSize',get(h,'FontSize')); set(hx,'FontWeight',get(h,'FontWeight')); %Set the additional parameters if they were input if length(varargin) 2; command_string = ; for j=1:2:length(varargin); command_string = ; end; command_string = ; eval(command_string); end; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%END: FIRST THE X-AXIS TICK LABELS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%BEGIN: NOW THE Y-AXIS TICK LABELS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %only move forward if we are doing anything to the yticks if ~exist('ticky'); hy = -1; elseif length(ticky)==0; hy = -1; else; %fix the YTickLabels if they have been erased in the past if length(get(h,'YTickLabel'))==0; set(h,'YTickLabel',get(h,'YTick')); end; %set the ytick positions if entered if exist('tickposy','var'); if length(tickposy) 0; set(h,'YTick',tickposy); set(h,'YTickLabel',tickposy); end; end; %make sure the xtick positions are in the xlimit range if exist('tickposy','var'); if length(tickposy) 0; lim = get(h,'YLim'); if lim(1) min(tickposy); lim(1) = min(tickposy); end; if lim(2) max(tickposy); lim(2) = max(tickposy); end; set(h,'YLim',lim); end; end; %get the tick labels and positions if the user did not input them if ~exist('ticky','var'); ticky = get(h,'YTickLabel'); if ischar(ticky); temp = ticky; ticky = cell(1,size(temp,1)); for j=1:size(temp,1); ticky{j} = strtrim( temp(j,:) ); end; end; % append = '^{\circ}'; append = ''; for j=1:length(ticky); ticky{j} = ; end; elseif length(ticky) == 0; ticky = get(h,'YTickLabel'); if ischar(ticky); temp = ticky; ticky = cell(1,size(temp,1)); for j=1:size(temp,1); ticky{j} = strtrim( temp(j,:) ); end; end; % append = '^{\circ}'; append = ''; for j=1:length(ticky); ticky{j} = ; end; elseif isstr(ticky); append = ticky; ticky = get(h,'YTickLabel'); if ischar(ticky); temp = ticky; ticky = cell(1,size(temp,1)); for j=1:size(temp,1); ticky{j} = strtrim( temp(j,:) ); end; end; if strcmp(append(1),'$'); for j=1:length(ticky); ticky{j} = ; end; else; for j=1:length(ticky); ticky{j} = ; end; end; elseif ~iscell(ticky ); warning( ); return; end; %find out if we have to use the LaTex interpreter temp = ticky{1}; if strcmp(temp(1),'$'); latex_on = 1; else; latex_on = 0; end; %erase the current tick label set(h,'YTickLabel',{}); %get the x tick positions if the user did not input them if ~exist('tickposy','var'); tickposy = get(h,'YTick'); elseif length(ticky) == 0; tickposy = get(h,'YTick'); end; %get the x tick positions if the user did not input them if ~exist('tickposx','var'); tickposx = get(h,'YTick'); elseif length(tickposx) == 0; tickposx = get(h,'XTick'); end; %set the new tick positions set(h,'YTick',tickposy); % set(h,'XTick',tickposx); %check the lengths of the xtick positions and xtick labels l1 = length(ticky); l2 = length(tickposy); if l1==0; set(h,'YTickLabel',ticky); end; if l1~=l2; disp( ); disp( ); if l2 l1; warning( ); else; warning( ); end; l3 = min( ); ticky = ticky{1:l3}; tickposy = tickposy(1:l3); end; %set rotation to 0 if not input if ~exist('roty','var'); roty = 0; elseif length(roty) == 0; roty = 0; end; %Convert the cell labels to a character string %ticky = char(ticky); ticky = cellstr(ticky); %Make the YTICKS! lim = get(h,'XLim'); if min(tickposx) lim(1); lim(1) = min(tickposx); end; if max(tickposx) lim(2); lim(2) = max(tickposx); end; if roty == 0; if latex_on; hy = text(... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposy),1),... tickposy,... ticky,'VerticalAlignment','middle',... 'HorizontalAlignment','right','rotation',roty,'interpreter','LaTex'); else; hy = text(... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposy),1),... tickposy,... ticky,'VerticalAlignment','middle',... 'HorizontalAlignment','right','rotation',roty); end; elseif roty 180; if latex_on; hy = text(... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposy),1),... tickposy,... ticky,'VerticalAlignment','middle',... 'HorizontalAlignment','right','rotation',roty,'interpreter','LaTex'); else; hy = text(... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposy),1),... tickposy,... ticky,'VerticalAlignment','middle',... 'HorizontalAlignment','right','rotation',roty); end; else; if latex_on; hy = text(... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposy),1),... tickposy,... ticky,'VerticalAlignment','middle',... 'HorizontalAlignment','right','rotation',roty,'interpreter','LaTex'); else; hy = text(... repmat(lim(1)-offset*(lim(2)-lim(1)),length(tickposy),1),... tickposy,... ticky,'VerticalAlignment','middle',... 'HorizontalAlignment','right','rotation',roty); end; end; %Get and set the text size and weight set(hy,'FontSize',get(h,'FontSize')); set(hy,'FontWeight',get(h,'FontWeight')); %Set the additional parameters if they were input if length(varargin) 2; command_string = ; for j=1:2:length(varargin); command_string = ; end; command_string = ; eval(command_string); end; end;
3761 次阅读|0 个评论
[转载]MATLAB绘制图形命令
linpandr 2011-12-13 18:33
1 、绘制图形命令 help graph2d % 列出所有 2D 图形命令 help graph3d % 列出所有 3D 图形命令 2 、 2D 图形命令 plot(x1,y1,’option 1’,x2,y2,’option2’,…); % option---- 定义颜色,线型以及曲线的标示符号 % 颜色: y 黄色 m 粉红 c 亮蓝 r 大红 g 绿色 b 蓝色 w 白色 k 黑色 % 线型: ’ .’ 点线 ’o’ 圈线 ’x’x 线 ‘+’ 十字线 ‘ — ‘ 实线 ‘*’ 星形线 ‘:’ 点线 ‘-.’ 点划线 ’--’ 虚线 '^' 上三角 'v' 下三角 '' 右三角 '' 左三角 's' 正方形 'p' 五角星 'd' 菱形 'h' 六角星 % 标示符号: figure(1), figure(2),…,figure(n); % 选择图形,打开不同的图形窗口 grid on; grid off; % 添加或删除栅格命令 hold on; hold off; 保持当前图形;覆盖当前图形 3 、图形修饰命令 axis( ); axis(‘equal’); % 设置 x 和 y 轴的显示坐标起始点和结束点;使得 x 和 y 轴单位刻度大小调整为一样。 text(x,y,’string’); % 在指定的位置 (x,y) 处显示 string gtext(‘string’); % 使用鼠标在任意位置放置 string title(‘string’); % 在图形的上方显示图形标题 xlabel(‘string’), ylabel(‘string’); % 设置 x 和 y 轴的名称 legend(‘string 1’, ‘string 2’ ,…,‘string n’); % 在图形中打开一个窗口,在一幅图上根据绘图顺序,区分不同的曲线。 4 、其它 2D 绘图命令 subplot(m,n,k); % 绘制多个子图 , m 指上下分割数, n 指左右分割数, k 是子图的标号。 semilogx(x,y); % 以 x 轴为对数坐标( 10 为底), y 轴为线性坐标的半对数坐标图。 semilogy(x,y); % 以 y 轴为对数坐标( 10 为底), x 轴为线性坐标的半对数坐标图。 loglog(x,y); % 绘制 X,Y 轴均为对数坐标轴的图形。 5 、应用型,数值统计分析,离散数据处理 bar(x,y); % 高度条形图 hist(x,y); % x 在以 y 为中心的区间中, (x,y) 分布个数条形图 stairs(x,y); % y 对应于 x 的梯形图 stem(x,y); % y 对应于 x 的散点图
3786 次阅读|0 个评论
[转载]MATLAB特殊图形和高维可视化
linpandr 2011-12-13 18:07
7.4 特殊图形和高维可视化 7.4.1 特殊图形指令例示 7.4.1.1 面域图area 【 * 例 7.4.1 .1-1 】面域图指令 area 。该指令的特点是:在图上绘制多条曲线时,每条曲线(除第一条外)都是把“前”条曲线作基线,再取值绘制而成。因此,该指令所画的图形,能醒目地反映各因素对最终结果的贡献份额。 注意:( 1 ) area 的第一输入宗量是单调变化的自变量。第二输入宗量是“各因素”的函数值矩阵,且每个“因素”的数据取列向量形式排放。第三输入宗量是绘图的基准线值,只能取标量。当基准值为 0 (即以 x 轴为基准线)时,第三输入宗量可以缺省。( 2 )本例第 4 条指令书写格式 x' , Y' , 强调沿列方向画各条曲线的事实。 clf;x=-2:2 % 注意:自变量要单调变化 Y= % 各因素的相对贡献份额 Cum_Sum=cumsum(Y) % 各曲线在图上的绝对坐标 area(x',Y',0) %4 legend(' 因素 A',' 因素 B',' 因素 C'),grid on,colormap(spring) x = -2 -1 0 1 2 Y = 3 5 2 4 1 3 4 5 2 1 5 4 3 2 5 Cum_Sum = 3 5 2 4 1 6 9 7 6 2 11 13 10 8 7 图 7.4.1 .1-1 面域图表现各分量的贡献 7.4.1.2 各种直方图bar, barh, bar3, bar3h 【 * 例 7.4.1 .2-1 】二维直方图有两种图型:垂直直方图和水平直方图。而每种图型又有两种表现模式:累计式:分组式。本例选其两种加以表现。 x=-2:2; % 注意:自变量要单调变化 Y= ; % 各因素的相对贡献份额 subplot(1,2,1),bar(x',Y','stacked') % “累计式”直方图 xlabel('x'),ylabel('/Sigma y'),colormap(cool)% 控制直方图的用色 legend(' 因素 A',' 因素 B',' 因素 C') subplot(1,2,2),barh(x',Y','grouped') % “分组式”水平直方图 xlabel('y'),ylabel('x') 图 7.4.1 .2-1 二维直方图 clf;x=-2:2; % 注意:自变量要单调变化 Y= ; % 各因素的相对贡献份额 subplot(1,2,1),bar3(x',Y',1) % “队列式”直方图 xlabel(' 因素 ABC'),ylabel('x'),zlabel('y') colormap(summer) % 控制直方图的用色 subplot(1,2,2),bar3h(x',Y','grouped') % “分组式”水平直方图 ylabel('y'),zlabel('x') 图 7.4.1 .2-2 三维直方图 7.4.1.3 饼图pie, pie3 【 * 例 7.4.1 .3-1 】饼图指令 pie , pie3 用来表示各元素占总和的百分数。该指令第二输入宗量为与第一宗量同长的 0-1 向量, 1 使对应扇块突出。 a= ; subplot(1,2,1),pie(a, ),legend({'1','2','3','4','5'}) subplot(1,2,2),pie3(a,a==min(a)),colormap(cool) 图 7.4.1 .3-1 饼形统计图 7.4.1.4 填色图fill,fill3 【 * 例 7.4.1 .4-1 】读者试验本例时,注意三点: MATLAB 画任意多边形的一种方法;保证绘图数据首尾重合,使勾画多边形封闭;使用图柄对图形的属性进行精细设置。 clf;n=10; % 多边形的边数 dt=2*pi/n;t=0:dt:2*pi t= ; %fill 指令要求数据向量的首位重合,使图形封闭。 x=sin(t);y=cos(t); fill(x,y,'c');axis off % 画填色多边形,隐去坐标轴。 ht=text(0,0,'/fontname{ 隶书 }/fontsize{32} 十边形 ');% 文字注释,且得图柄。 set(ht,'Color','k','HorizontalAlignment','Center') % 依靠图柄设置属性。 图 7.4.1 .4-1 由 fiil 产生的填色多边形 【例 7.4.1 .4-2 】三维填色指令 fill3 演示。注意:( 1 ) X,Y,Z 的相应列元素构成一个三维封闭多边形。本例有 4 列,因此有 4 个多边形。图 7.4.1.4-2 中的“ 1 , 2 , 3 , 4 ” 号三角形分别由 X,Y,Z 的第 1 , 2 , 3 , 4 列生成。( 2 )为使多边形封闭,每列的首尾元素应该重合。若不重合,则将默认把最后一点与第一点相连,强行使多边形封闭。( 3 )该指令的第 4 输入宗量可取定色单字符(如 'r' , 'g' 等),也可取与 X 同维的数值矩阵。( 4 )所填色彩受 C 和色图的双重响应。( 5 )本例图中三角形的编号是通过“图形窗”编辑而生成的。 X= ; Y= ; Z= ;C= ; fill3(X,Y,Z,C),view( ),colormap cool xlabel('x'),ylabel('y'),box on;grid on 图 7.4.1 .4-2 三维填色 7.4.1.5 射线图compass和羽毛图feather 【 * 例 7.4.1 .5-1 】 compass 和 feather 指令的区别。 t=-pi/2:pi/12:pi/2; % 在 区间,每 取一点。 r=ones(size(t)); % 单位半径 =pol2cart(t,r); % 极坐标转化为直角坐标 subplot(1,2,1),compass(x,y),title('Compass') subplot(1,2,2),feather(x,y),title('Feather') 图 7.4.1 .5-1 compass 和 feather 指令的区别 7.4.1.6 Voronoi图和三角剖分 【 * 例 7.4.1 .6-1 】用 Voronoi 多边形勾画每个点的最近邻范围。 Voronoi 多边形在计算几何、模式识别中有重要应用。从本例图 7.4.1.6-1 中,可以看到,三角形顶点所在多边形的三条公共边是剖分三角形边的垂直平分线。 clf;rand('state',111) n=30;A=rand(n,1)-0.5;B=rand(n,1)-0.5; % 产生 30 个随机点 T=delaunay(A,B); % 求相邻三点组 T= ; % 为使三点剖分三角形封闭而采取的措施 voronoi(A,B) % 画 Voronoi 图 hold on;axis square fill(A(T(10, :)),B(T(10,:)),'y'); % 画一个剖分三角形 voronoi(A,B) % 重画 Voronoi 图,避免线被覆盖。 图 7.4.1 .6-1 Voronoi 多边形和 Delaubay 三角剖分 7.4.1.7 彩带图ribbon 【 * 例 7.4.1 .7-1 】用彩带绘图指令 ribbon ,绘制归化二阶系统 在不同 值时的阶跃响应,如图 7.4.1.7-1 所示。对于本例程序,有以下几点值得注意:( 1 )程序中使用了 Control Toolbox 中的两个指令 tf 和 step 。这 tf 是一个( MATLAB5.x 版起用的)“对象”。( 2 )本例构作的 S 是一个单输入 8 输出系统,作用于该 S 的 step 指令也将在一次调用中产生 8 个子系统的阶跃响应。( 3 )在下段程序运行后,有兴趣的读者可显示 S ,以观察系统是如何描写的。( 4 )本例为了得到较好的表现效果,采用了视角、明暗、色图、光照控制。( 5 )为使程序有一定通用性,图例采用元胞数组生成。( 6 )本例产生的图 7.4.1.7-1 中,除“ ”外,所有标识都是由下段指令产生的。( 7 )“ ”中的斜向箭头无法由指令生成,而是直接通过“图形窗”编辑实现的( MATLAB5.3 版起用)。( 8 )本例程序有通用性。只要修改第 2 条指令对阻尼系数的设定,就可获得响应的彩带图形。 clear,clf zeta2= ; %2 n=length(zeta2); for k=1:n;Num{k,1}=1;Den{k,1}= ;end S=tf(Num,Den); % 产生单输入多输出系统 t=(0:0.4:30)'; % 时间采样点 =step(S,t); % 单输入多输出系统的响应 tt=t*ones(size(zeta2)); % 为画彩带图,生成与函数值 Y 维数相同的时间矩阵。 ribbon(tt,Y,0.4) % 画彩带图 % 至此彩带图已经生成。以下指令都是为了使图形效果更好、标识更清楚而用。 view( ),shading interp,colormap(jet)% 设置视角、明暗、色图 light,lighting phong,box on % 设置光源、照射模式、坐标框 for k=1:n;str_lgd{k,1}=num2str(zeta2(k));end,legend(str_lgd)% 图例设置 str1='/itG = (s^{2} + 2/zetas + 1)^{-1}'; str2='/fontsize{16}/fontname{ 隶书 } 取不同 '; str3='{/fontsize{10}/it/zeta}'; str4='/fontsize{16}/fontname{ 隶书 } 时的阶跃响应 '; title( ),zlabel('/ity(/zeta,t) /rightarrow') 图 7.4.1 .7-1 二阶系统在不同阻尼系数时的响应 7.4.1.8 离散杆图stem , stem3 【 * 例 7.4.1 .8-1 】本例表现一个离散方波的快速 Fourier 变换的幅频。本例左图用极坐标指令 polar 绘出,右图用三维离散杆图指令 stem3 绘出。 MATLAB 的 polar 指令是建筑在 plot 基础上的。指令执行后,出现的极坐标轴及分度标识也是由 plot 以一种“固定”模式产生的。因此,极坐标轴的控制很不灵活,它只能以比较简单的方式表达函数。如对于本例左图,那图形小、线条细、文字太密的缺陷,就较难克服。相比而言,先借助极坐标和直角坐标转换,然后再通过直角坐标图形指令加以表现,往往更显灵活、方便。如本例的右图。 th = (0:127)/128*2*pi; % 角度采样点 rho=ones(size(th)); % 单位半径 x = cos(th);y = sin(th); f = abs(fft(ones(10,1),128)); % 对离散方波进行 FFT 变换,并取幅值。 rho=ones(size(th))+f'; % 取单位圆为绘制幅频谱的基准。 subplot(1,2,1),polar(th,rho,'r') subplot(1,2,2),stem3(x,y,f','d','fill') % 取菱形离散杆头,并填色。 view( ) % 控制角度,为表现效果。 图 7.4.1 .8-1 离散方波的幅频谱 7.4.1.9 二维半图指令pcolor, contour, contourf 【 * 例 7.4.1 .9-1 】本例重点演示所谓“二维半”指令:伪彩图 pcolor ;等位线指令 contour 、 contourf ;等位线标高指令 clabel 的配合使用和区别。练习本例时注意:( 1 )本例等位线指令中的第 4 输入宗量 n 设定高度的等级数,第 5 输入宗量设定等位线的线型、色彩。( 2 )左右两图的标高方法不同。左图的标识以“ + ”引导,水平放置。右图沿线布置。这是由 clabel 的调用格式不同产生的。( 3 )左右两图色彩的形成方法不同,色彩效果也不同。( 4 )在左图中, colorbar 画出一根垂直色标尺,而 caxis 决定该色标尺的刻度。 clf;clear; =peaks(40); % 获得 peaks 图形数据 n=4; % 等高线分级数 subplot(1,2,1),pcolor(X,Y,Z) % 伪彩图 colormap jet,shading interp hold on,C=contour(X,Y,Z,n,'k:'); % 用黑虚线画等位线,并给出标识数据。 clabel(C) % 随机标识法 zmax=max(max(Z));zmin=min(min(Z));caxis( ) % 决定色标尺的范围 colorbar % 画垂直色标尺 hold off,subplot(1,2,2) =contourf(X,Y,Z,n,'k:'); % 用黑虚线画填色等位线,并给出标识数据。 clabel(C,h) % 沿线标识法 图 7.4.1 .9-1 “二维半”指令的演示 7.4.1.10 散点图scatter , scatter3 , plotmatrix 【 * 例 7.4.1 .10-1 】表现函数 。请注意本例中的 3 个指令:( 1 )散点图指令 scatter3 ,标志三维数据点。它的前三个输入宗量必须是同长的向量,如指令 5 。( 2 )带垂帘的网线图指令 meshz ,它的调用格式与 mesh 没有什么不同。此外,再次提醒读者注意指令 2 。这样处理的目的是避免 0/0 的不定性。该处理方法是求极限的一种数值方法。 x=3*pi*(-1:0.2:1);y=x; =meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R;% 引入 eps 避免 0/0 , %2 C=abs(del2(Z)); % 求“五点格式”差分,反映曲面变化。 meshz(X,Y,Z,C) % 由曲面变化决定用色 hold on,scatter3(X(:),Y(:),Z(:),'filled') %5 hold off,colormap(hot) 图 7.4.1 .10-1 三维散点图 【 * 例 7.4.1 .10-2 】指令 plotmatrix 有两种基本调用方式:( 1 )对于数据矩阵 维的 X 和 维的 Y ,调用格式 plotmatrix(X,Y) 将画出一个分割成 个子散点图。其中第 个子散点图是根据 Y 第 列和 X 第 列数据画出的。( 2 )对于数据矩阵 维的 X ,调用格式 plotmatrix(X) 将画出分割成 个子块的图。该图的对角块,画出的是 X 每列的数据的频数直方图;而其他子块是相应列构成的散点图。该指令可用来观察数据矩阵(或同一矩阵列向量)间的统计关系。 randn('seed',1111),X=randn(100,2);Y=randn(100,2); subplot(1,3,1),plotmatrix(X) subplot(1,3,2),plotmatrix(X,X) subplot(1,3,3),plotmatrix(X,Y) 图 7.4.1 .10-2 plotmatrix 表现数据统计特性 7.4.1.11 不规则数据的网线图和曲面图 【 * 例 7.4.1 .11-1 】用三角网线、曲面图表现函数 。 rand('seed',22),X=6*pi*(rand(20,10)-0.5);Y=6*pi*(rand(20,10)-0.5); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R; tri=delaunay(X,Y); % 进行三角剖分 subplot(1,2,1),trimesh(tri,X,Y,Z) subplot(1,2,2),trisurf(tri,X,Y,Z) colormap(jet);brighten(0.5) % 增强亮度 图 7.4.1 .11-1 不规则数据的三维表现 7.4.1.12 泛函绘图指令fplot 【 * 例 7.4.1 .12-1 】 fplot 与一般绘图指令的绘图效果比较。 =fplot('cos(tan(pi*x))', ,0.2e-3);n=length(x); subplot(1,2,1),plot(x,y) title('/fontsize{20}/fontname{ 隶书 } 泛函绘图指令效果 ') t=(-0.4:1.8/n:1.4)'; subplot(1,2,2),plot(t,cos(tan(pi*t))) title('/fontsize{20}/fontname{ 隶书 } 等分采样绘图 ') 图 7.4.1 .12-1 右图曲线中底部有明显绘图缺陷 7.4.2 四维表现 7.4.2.1 用色彩表现函数的特征 【 * 例 7.4.2 .1-1 】用色图阵表现函数的不同特征。演示:当三维网线图、曲面图的第四个输入宗量取一些特殊矩阵时,色彩就能表现或加强函数的某特征,如梯度、曲率、方向导数等。 x=3*pi*(-1:1/15:1);y=x; =meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R; =gradient(Z);dzdr=sqrt(dzdx.^2+dzdy.^2); % 计算对 r 的全导数 dz2=del2(Z); % 计算曲率 4 subplot(1,2,1),surf(X,Y,Z),title('No. 1 surf(X,Y,Z)') shading faceted,colorbar( 'horiz') ,brighten(0.2) subplot(1,2,2),surf(X,Y,Z,R),title('No. 2 surf(X,Y,Z,R)') shading faceted;colorbar( 'horiz') 图 7.4.2 .1-1 色彩分别表现函数的高度和半径特征 clf;subplot(1,2,1),surf(X,Y,Z,dzdx) shading faceted;brighten(0.1);colorbar( 'horiz') title('No. 3 surf(X,Y,Z,dzdx)') subplot(1,2,2),surf(X,Y,Z,dzdy) shading faceted;colorbar( 'horiz') title('No. 4 surf(X,Y,Z,dzdy)') 图 7.4.2 .1-2 色彩分别表现函数的 x 方向和 y 方向导数特征 subplot(1,2,1),surf(X,Y,Z,abs(dzdr)) shading faceted;brighten(0.6);colorbar( 'horiz') title('No. 5 surf(X,Y,Z,abs(dzdr))') subplot(1,2,2),surf(X,Y,Z,abs(dz2)) %17 shading faceted;colorbar( 'horiz') title('No. 6 surf(X,Y,Z,abs(dz2))') 图 7.4.2 .1-3 色彩分别表现函数的径向导数和曲率特征 7.4.2.2 切片图和切片等位线图 【 * 例 7.4.2 .2-1 】利用 slice 和 contourslice 表现 MATLAB 提供的无限大水体中水下射流速度数据 flow 。 flow 是一组定义在三维空间上的函数数据。 在本例中,从图中的色标尺可知,深红色表示“正速度”(向图的左方),深蓝表示“负速度”(向图的右方)。 % 以下指令用切面上的色彩表现射流速度 clf; =flow; % 取 4 个 的射流数据矩阵, V 是射流速度。 x1=min(min(min(X)));x2=max(max(max(X))); % 取 x 坐标上下限 y1=min(min(min(Y)));y2=max(max(max(Y))); % 取 y 坐标上下限 z1=min(min(min(Z)));z2=max(max(max(Z))); % 取 z 坐标上下限 sx=linspace(x1+1.2,x2,5); % 确定 5 个垂直 x 轴的切面坐标 sy=0; % 在 y=0 处,取垂直 y 轴的切面 sz=0; % 在 z=0 处,取垂直 z 轴的切面 slice(X,Y,Z,V,sx,sy,sz); % 画切片图 view( );shading interp;colormap jet;axis off;colorbar 图 7.4.2 .2-1 切片图 % 以下指令用等位线表现射流速度 clf;v1=min(min(min(V)));v2=max(max(max(V))); % 射流速度上下限 cv=linspace(v1,v2,15); % 在射流上下限之间取 15 条等位线 contourslice(X,Y,Z,V,sx,sy,sz,cv);view( ) colormap jet;colorbar;box on 图 7.4.2 .2-2 切片等位线图 7.4.3 动态图形 7.4.3.1 彗星状轨迹图 【 * 例 7.4.3 .1-1 】简单二维示例。(请读者自己在指令窗中运行以下指令。) shg;n=10;t=n*pi*(0:0.0005:1);x=sin(t);y=cos(t); plot(x,y,'g');axis square;hold on comet(x,y,0.01);hold off 【 * 例 7.4.3 .1- 2 】卫星返回地球的运动轨线示意。(请读者自己在指令窗中运行以下指令。) shg;R0=1; % 以地球半径为一个单位 a=12*R0;b=9*R0;T0=2*pi; %T0 是轨道周期 T=5*T0;dt=pi/100;t= '; f=sqrt(a^2-b^2); % 地球与另一焦点的距离 th=12.5*pi/180; % 卫星轨道与 x-y 平面的倾角 E=exp(-t/20); % 轨道收缩率 x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t)); plot3(x,y,z,'g') % 画全程轨线 =sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z; % 获得单位球坐标 grid on,hold on,surf(X,Y,Z),shading interp % 画地球 x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0; axis( ) % 确定坐标范围 view( ),comet3(x,y,z,0.02),hold off % 设视角、画运动轨线 图 7.4.3 .1-1 卫星返回地球轨线示意 7.4.3.2 色图的变幻 【例 7.4.3 .2-1 】色彩变幻(因印刷关系,无法表现。请读者自己在指令窗中运行以下指令。注意:在 256 色情况下,才可被正确执行) peaks spinmap 7.4.3.3 影片动画 【 * 例 7.4.3 .3-1 】三维图形的影片动画。(因印刷关系,无法表现本例。请读者自己在指令窗中运行以下指令。) clf;shg,x=3*pi*(-1:0.05:1);y=x; =meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; h=surf(X,Y,Z);colormap(jet);axis off n=12;mmm=moviein(n); % 预设画面矩阵。新版完全可以取消此指令 。 for i=1:n rotate(h, ,25); % 是图形绕 z 轴旋转 25 度 / 每次 mmm(:,i)=getframe; % 捕获画面。新版改为 mmm(i)=getframe 。 end movie(mmm,5,10) % 以每秒 10 帧速度,重复播放 5 次
5610 次阅读|0 个评论
[转载]Matlab二维图形的绘制
linpandr 2011-12-10 16:57
常用的二维图形命令: http://hi.baidu.com/lukespring/blog/item/3fa11516da355652f2de32ea.html plot:绘制二维图形    loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill: 绘制二维多边填充图形 polar:绘极坐标图       bar:画条形图 stem:画离散序列数据图    stairs:画阶梯图 errorbar:画误差条形图     hist:画直方图 fplot:画函数图      title:为图形加标题 xlabel:在X轴下做文本标记 ylabel:在Y轴下做文本标记 zlabel:在Z轴下做文本标记 text:文本注释    grid:对二维三维图形加格栅 绘制单根二维曲线 plot函数,基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。 例如: 在0≤x≤2?区间内,绘制曲线 y=2e-0.5xcos(4πx ) 程序如下: x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y) plot函数最简单的调用格式是只包含一个输入参数: plot(x) 在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 p= ; plot(p) 绘制多根二维曲线 1.plot函数的输入参数是矩阵形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。 2.含多个输入参数的plot函数 调用格式为: plot(x1,y1,x2,y2,…,xn,yn) (1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 (2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 例如: 分析下列程序绘制的曲线。 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x= '; y= '; plot(x,y,x1,y1-1) 3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 例如: 用不同标度在同一坐标内绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); plotyy(x,y1,x,y2); 4.图形保持 hold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。 例如: 采用图形保持,在同一坐标内绘制曲线 y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx)。 程序如下: x=0:pi/100:2*pi; y1=0.2*exp(-0.5*x).*cos(4*pi*x); plot(x,y1) hold on y2=2*exp(-0.5*x).*cos(pi*x); plot(x,y2); hold off 设置曲线样式 MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-.”表示蓝色点划线,“y:d”表示黄色虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。 要设置曲线样式可以在plot函数中加绘图选项,其调用格式为: plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n) 例如: 在同一坐标内,分别用不同线型和颜色绘制曲线y1=0.2e-0.5xcos(4πx) 和y2=2e-0.5xcos(πx),标记两曲线交叉点。 程序如下: x=linspace(0,2*pi,1000); y1=0.2*exp(-0.5*x).*cos(4*pi*x); y2=2*exp(-0.5*x).*cos(pi*x); k=find(abs(y1-y2)1e-2); %查找y1与y2相等点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=0.2*exp(-0.5*x1).*cos(4*pi*x1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp'); 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为: title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text(x,y,图形说明) legend(图例1,图例2,…) 函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(0.3,0.5,‘sin({\omega}t+{\beta})’)将得到标注效果sin(ωt+β)。 例如: 在0≤x≤2?区间内,绘制曲线y1=2e-0.5x和y2=cos(4πx),并给图形添加图形标注。 程序如下: x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2) title('x from 0 to 2{\pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); %在指定位置添加图形说明 text(2.5,1.1,'曲线y2=cos(4{\pi}x)'); legend(‘y1’,’y2’) %加图例 2.坐标控制 axis函数的调用格式为: axis( ) axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示坐标轴。 例如: 给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 程序如下: t=0:0.01:2*pi; x=exp(i*t); y= '; plot(y) grid on; %加网格线 box on; %加坐标边框 axis equal %坐标轴采用等刻度 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p) 该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。 例如: 在一个图形窗口中以子图形式同时绘制正弦、余弦、正切、余切曲线。 程序如下: x=linspace(0,2*pi,60); y=sin(x);z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); plot(x,y);title('sin(x)');axis ( ); subplot(2,2,2); plot(x,z);title('cos(x)');axis ( ); subplot(2,2,3); plot(x,t);title('tangent(x)');axis ( ); subplot(2,2,4); plot(x,ct);title('cotangent(x)');axis ( ); 其他二维图形 其他坐标系下的二维数据曲线图 1.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 例 绘制y=10x2的对数坐标图并与直角线性坐标图进行比较。 程序如下: x=0:0.1:10; y=10*x.*x; subplot(2,2,1);plot(x,y);title('plot(x,y)');grid on; subplot(2,2,2);semilogx(x,y);title('semilogx(x,y)');grid on; subplot(2,2,3);semilogy(x,y);title('semilogy(x,y)');grid on; subplot(2,2,4);loglog(x,y);title('loglog(x,y)');grid on; 2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。 例4-11 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 程序如下: t=0:pi/50:2*pi; r=sin(t).*cos(t); polar(t,r,'-*'); 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项):画条形图 stairs(x,y,选项): 画阶梯图 stem(x,y,选项):画离散序列数据图 例 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下: x=0:pi/10:2*pi; y=2*sin(x); subplot(2,2,1);bar(x,y,'g'); title('bar(x,y,''g'')');axis( ); subplot(2,2,2);stairs(x,y,'b'); title('stairs(x,y,''b'')');axis( ); subplot(2,2,3);stem(x,y,'k'); title('stem(x,y,''k'')');axis( ); subplot(2,2,4);fill(x,y,'y'); title('fill(x,y,''y'')');axis( ); ll(x1,y1,选项1,x2,y2,选项2,…):填充图形 MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例 绘制图形: (1) 某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。 (2) 绘制复数的相量图:7+2.9i、2-3i和-1.5-6i。 程序如下: subplot(1,2,1); pie( ); title('饼图'); legend('一季度','二季度','三季度','四季度'); subplot(1,2,2); compass( );
3266 次阅读|0 个评论
利用EXCEL做专利分析(八)——可视化(2)——可视化图形分类
热度 3 yngcan 2011-12-4 22:05
利用EXCEL做专利分析(八)——可视化(2)——可视化图形分类
专利分析中专利地图是最炫,最忽悠人的一个环节。 但与专利分析工具不同,如果在EXCEL上自己构建专利地图,就需要按照一定的规则来设计专利地图。 总之,一定要利用EXCEL现有的图形形式来实现你先要表达的意思。 具体而言 首先,要弄清楚你的可视化是针对什么内容的,是数据、概念、信息、隐喻、成分还是战略可视化。 其次,要弄清楚可视化着力表现的是哪方面特征?是过程、结构、从宏观到微观,还是从微观到宏观?是发散思维还是收敛思维?(以下地图可以作为我们设计EXCEL专利地图的一个参考) http://www.visual-literacy.org/periodic_table/periodic_table.html 再次,传统专利分析有一些基本的约定,我们需要遵循。(参考2000年日本出版的专利地图手册) 专利地图实践指导用书.pdf 再次,要了解EXCEL有哪些图形工具可以供你使用?基本图表、微型图、矩阵图、关联图?或者其他什么。 最后,当你设计出一个图形之后可以跟现有的专利工具的地图进行比较。
个人分类: 专利|11014 次阅读|5 个评论
如何实现excel2007图形中的条纹填充
热度 1 aleczh 2011-12-3 17:16
如何实现excel2007图形中的条纹填充
PatternUI.xlam 在论文投稿时,有时要将excel图中不同颜色变为条纹样式,这样在黑白打印时更易分辨,但是excel2007中并没有嵌套此功能,需要补充一个加载项,有需要的童鞋可以下载,下面介绍一下如何实现此功能: 1.首先下载加载项“PatternUI.xlam”; 2.打开excel2007,点击左上角的“office按钮”,点击“excel选项”,打开如图: 3.点击左边的“加载项”,打开如图, 4.选择下边的“转到”,打开如图, 5.点击“浏览”,找到你所下载的加载项保存的文件夹,如图, 6.加载项已加载到excel,在excel中做一张图,双击后,在“格式”下便出现, 此时,可以选择不同条纹,进行图片修改了!
个人分类: 技术技巧|9930 次阅读|1 个评论
[转载]谷歌WebGL浏览器图形技术Angle现雏形
limiaoyi 2011-12-3 13:45
Angle是Google为Windows计算机开发的图形项目,目前已通过一个重要认证里程碑,可以提高某些浏览器的图形识别。谷歌于2010年3月推出Angle,是WebGL的图形辅助工具,借用新生的3D图形技术提升浏览器体验。 11.29,谷歌程序员Vangelis Kokkevis宣布,Angle已经通过OpenGL 2.0的认证测试套件。 WebGL提供了级别较低的图形界面,遵循MAC OS X,Linux的,iOS以及Android的OpenGL标准;但目前推广仍不及OpenGL。Windows自带微软标准的Direct3D,而 Angle主要是将OpenGL命令转换为Direct3D。 基于WebGL技术的Angle带来的3D地图特效(香港九龙区) Kokkevis表示:“Angle是我们继续努力向前推动网络平台的必要步骤。没有Angle,就不可能运行Windows计算机上的 WebGL标准,也无法启动MapsGL。MapsGL是一个可选的基于WebGL界面的谷歌地图3D建筑物,以及一些不同于普通在线地图工具的功能。” Angle被Chrome与Firefox用于Windows系统,以识别WebGL。这一点很重要, 微软对WebGL不太看好,但传统的游戏程序员渴望深挖挖掘网络建设,带来更复杂的2D和3D游戏支持。 说服微软来支持WebGL仍然是一个非常大的障碍。微软IE不支持WebGL,而开发者可以不依赖WebGL来制作游戏。对于用户来说,这意味着网站恼人的警告,如“这个游戏只运行在Firefox/Opera/Chrome最新版本。” (转自: 新浪科技 )
2429 次阅读|0 个评论
[转载]图解visio与eps格式图形的转换
wqinmin 2011-11-29 16:28
转载: http://hi.baidu.com/h_wen/blog/item/32efc72a1714c09d033bf68d.html 比较正规的杂志一般推荐论文插图使用eps格式,因为便于用latex排版时调用。 但latex在国内的普及度不高,我等懒人还是用word写作较多。论文录用时,问题就出现了,word中的插图都是visio画的,怎么转换成杂志社要求的eps格式呢? 反复痛苦的尝试后,总结出以下两种方法: 1、将visio图形打印成eps格式,然后用ghostview软件去除四周空白。 2、先将visio图形另存为tif格式,然后作为照片全页打印为pdf文件,再由adobe acrobat 软件转换为eps图形。 以下是两种方法的图解。 方法1: 首先用visio画好图形 画好后选择打印 进入打印界面后钩选打印到文件 打开打印机属性设置界面,去除第三选项前的钩 将默认设置改为Press quality --布局--高级设置 将Postscript output option选择为EPS 选择truetype font 为bitmap 确认设置后开始打印 输入文件名后缀为eps 保存 打印完毕 将打印好的文件后缀改为ps 用ghostswiew打开文件 选择ps to eps 输入文件名后缀为eps 完成后贴入word文档看看效果吧 if (strartpermission == "2") { document.getElementById('quanxian').value = "2"; }
3307 次阅读|0 个评论
[转载]R 基本画图参数
biowanglei 2011-11-25 23:39
R的基本画图函数非常容易学,看上去也很普通。然而 适当的参数设置,有意义的颜色设置,不同基本图间的互相组合 ,会使你的图更漂亮也更有力的表达数据。下面介绍一些R基本包里画图函数的参数: hist(): breaks设置每个柱的间距;freq柱图表示count或frequency;polt设置是否画图;density和angle可以设置柱上的斜线;axes设置是否需要画坐标轴; cor设置柱图的颜色;border设置柱图边界的颜色;xlim设置横轴范围;ylim设置纵轴范围。 R的许多函数都有类似的参数名,这些函数往往有同样的功能。因此后面就只介绍比较特殊的参数。 layout(): mat用矩阵设置窗口的划分,矩阵的0元素表示该位置不画图,非0元素必须包括从1开始的连续的整数值,比如:1……N,按非0元素的大小设置图形的顺序。widths用来设置窗口不同列的宽度,heights设置不同行的高度。par()的mfcol,和mfrow参数也有类似layout的功能,不过相对layout就逊色多了。 par(): mar设置图离四个边缘的距离;bg设置背景颜色;xaxt和yaxt设置坐标轴标签的类型(=”n”表示不画轴标签);xlim和ylim设置坐标轴的范围。 axis(): las设置坐标轴标签的方式(水平,垂直……)。 mtext(): 为四个坐标轴添加标签。 text(): 在给定坐标的位置写字。 lines(): lty设置线的类型;lwd设置线的宽度。 points(): pch设置点的类型。 plot(): 最简单的画图函数。type设置画图的类型(type=”n”表示不画数据);axes设置是否画坐标轴。常用的参数还有:xlim和ylim,xaxt和yaxt。 barplot(): space设置bar图间的间距;horiz设置bar的方向是垂直或水平;beside设置height为矩阵时,每列元素的bar排列方式;add设置是否将barplot加在当前已有的图上。 legend(): 除了利用x,y设置图例的坐标外,用”topleft”, "center","bottomright"等设置位置非常方便。ncol设置图例的列数, horiz设置图例的排列方向。常有的参数还有col,lty,pch。 heatmap(): Rowv和Colv设置是否需要按行或列聚类;scale设置是否需要按行或列标准化;na.rm设置是否移去NA;RowSideColors和ColSideColors可以在行或列边缘添加颜色;keep.dendro设置是否画聚类树。 dendrogram(): 'nodePar'和'edgePar'都是list,可以方便的设置节点和边的各种属性,如:颜色,样式,宽度,标签……。 在初学一个函数的时候,可能不知道函数有哪些参数,尤其是R中用...省略的参数。这时候看看“See Also:”里面提供的相关函数时非常有用的,R函数多是继承其它的更一半的函数,所以参数也会继承,理解了这一点,就能灵活应用..省略的参数了。另一方面,一些函数返回的对象的类是比较复杂的,有多个属性(一般会在“Value”里面说明这些对象的属性)。但有些函数的帮助里没有“Value”栏, 幸运的是R中的一些函数提供了对各种类通用的处理,通过这些函数你可以大概了解一个对象所有的属性。如: summary() 总结对象的基本特征; attributes() 列出对象的所有属性; attr() 给出对象的指定属性的值; labels() 列出对象的标签;str()展示对象的结构……。 http://hlwyjsh.blog.163.com/blog/static/579533302010616104928853/
4929 次阅读|0 个评论
如何在博客中插入图形
热度 1 刘正管 2011-11-25 21:47
没受过电脑操作专门训练,原以为会打字就行了,但越来越体会到,光用文字叙述,很多事情不容易说清,如果能配合图形说明,就方便多了,可是不知如何操作。比如在《科学网》上写博文时,篇头也有个“公式编辑器”图标,里面也有绘图项目,试了几次,没有进一步提示,不知该如何操作。看看其他书籍,版本与现有电脑又对不上号,挺郁闷的。谁能给予帮助,先谢过了。
108 次阅读|2 个评论
极坐标图形的绘制
zjzhang 2011-11-12 12:44
极坐标图形的绘制
polar(t,sin(2*t).*cos(2*t),'-r'); clear all t=0:0.01:2*pi; polar(t,sin(2*t).*cos(2*t),'-r');
个人分类: 图像分析(matlab,PDE)|5583 次阅读|0 个评论
单轴对数图形的绘制
zjzhang 2011-11-12 12:32
单轴对数图形的绘制
clear all x=0:5:100; semilogy(x,10.^x,'-or','MarkerEdgeColor','b');%单轴对数图形绘制红色实线、蓝色边缘小圆圈标志 grid on;
个人分类: 图像分析(matlab,PDE)|2806 次阅读|0 个评论
图形的相似性判别方法研究
mrlab 2011-10-11 09:49
图像的相似性研究较多,但针对图形的相似性研究较少。仅查到一篇文章(参见附件 相似夹角定理及其在图形学上的应用.pdf )。相关专利信息未检测到。 图形相似性的应用,应该说还是比较多的,如: 图形水印相似性比较,进行认证; 基于几何形态的矢量查询、特征地物识别; 等等 问题:针对矢量要素几何信息的相似性检 索,在局部区域内,可以转换为图像相似性问题来解决,但针对大区域GIS矢量数据而言,转换为图像相似性问题来解决,有以下不足: 精度损失 效率问题 11月份,拟安排一研究生深入开展这一工作,并形成专利或论文,特此提醒。
个人分类: 问题探讨|4 次阅读|0 个评论
在维与维之间 —— 分形图形(包含小数的维)
热度 1 readnet 2011-2-22 00:32
在维与维之间 —— 分形图形(包含小数的维)
以前所谈到的维度都是用“0”或大于“0”的整数(0,1,2,3,…)来按顺序下定义。 其实,也可以 按照小数点以下的分数来顺序定义维 ,而且的确也有这样定义的维。 以立方体为例, 把立方体增大至原来的2倍, 那就是每个 边长变为原来的2(2^1)倍, 表面积变为原来的4(2^2)倍, 体积变为原来的8(2^3)倍。 可以看出,这里的指数同维度数是一致的。 利用这个性质, 德国数学家菲勒克斯·豪斯多夫(1868-1942) 提出了一种新的定义维的方法 , 其基本意思是: “ 把图形放大到原来的x倍, 如果某个量因此而变为原来的x^n倍, 那么就确定这个量是n维 ”。 按照这个定义所确定的维度有一个专门名称,叫做“ 豪斯多夫维 ”。 按照豪斯多夫维,通常的直线或曲线是一维,通常的平面图形是二维,维数仍然是整数。 但是, 有一类被称为“ 分形 ”的特殊图形,它们的豪斯多夫维就 不是整数 。 所谓分形,也可以说是具有“自相似性”的图形 , 将 其无论怎样放大,所得到的图形 在整体上都与原来的图形具有相同的结构 。 海岸线、山脉、云朵等都是自然界中分形的实例。 最经典的分形例子叫“谢宾斯基三角形”。 Sierpinski(谢宾斯基)三角形,其中蕴含涉及 数列 等非常有趣的、多方面知识。在附图中的三角形,可称作谢宾斯基。 在图示5个三角形中,黑色三角形的个数依次构成一个数列的前5项。在以上5个三角形中,黑色三角形的个数依次为1,3,9,27,81。 该数列的前四项都是3的指数幂,且指数为序号减去1。因此,该数列的通项公式可表示为: An=3^(n-1)            这个图形的豪斯多夫维是大约1.58维 将这个图形放大至原来的2倍,结果得到的是原来3个图形拼合起来的图形。 这就是说,图形放大到原来的2倍,面积增加到原来的3倍。 我们知道,2^(1.58)≈3,因此这个图形的豪斯多夫维是大约1.58维。 在维和维之间还存在着分形图形 分形 ( Fractal ) 一词的创始人,美国数学家 Mandelbrot 1967 年在 Science 上发表了著名的文章《英国海岸线有多长》( how Long Is The Coast Of Britain ),从此使“分形”的概念变得十分流行。 什么是分形呢?简单地说,就是说自然中存在的线、面、体,并不像古希腊人和欧氏几何期望的那样是光滑平整的,而是“坑坑洼洼”的 。 Mandelbrot 有一句名言:“ 云彩不是球体,山岭不是锥体,海岸线不是圆周,树皮并不光滑,闪电更不是沿着直线传播的 。 扩展阅读: 蒋迅的博客   蒋迅的个人博客 › TA的所有博文 › 查看博文 大自然创作的分形艺术 数学上的 分形 ( Fractal ) 是指“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少会大略)是整体缩小尺寸的形状”。数学家们已经创作出许多美丽的分形图案,有一个网站 Fractal Animation ,专门收集分形的视屏。我国还分形频道: http://www.fractal.cn/net/ 。 在自然界里也有许多分形的事物。 连线 给出了一组大自然创作的分形艺术,转到这里。如果你喜欢的话,一定要看 连线 的原文,那里有更多的图片,还有讲解。 绿菜花 (Romanesco Broccoli) Source: Flickr/ Tin.G 盐硷地 (Salt Flats) Source:Flickr/ Tolka Rover 鹦鹉螺化石 (Ammonite Sutures) Source: Flickr/ cobalt123 群山 (Mountains) Source: NASA/GSFC/JPL, MISR Team. 蕨类植物 (Ferns) Source: Flickr/ cobalt123 云彩 (Clouds) Source: Jeff Schmaltz/ MODIS Land Rapid Response Team/NASA 叶子 (Leaves) Source: Flickr/ CatDancing 峡谷 (Canyons) Source: GeoEye/Space Imaging 闪电 (Lightning) Source: Flickr/ thefost 孔雀羽毛 (Peacock Feathers) Source: Flickr/ Digimist 雪花 (Snowflakes) Source: Flickr/ mommamia 瀑布 (Waterfall) Source: Flickr/ catdancing 三角洲 (River Delta) Source: NASA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 分形学:可以无穷放大的 Mandelbrot Set (曼德布洛特集) VC 源代码 转自我的博客: http://hi.baidu.com/yangw80/blog/item/287321115efb8c70cb80c41d.html 基于上篇文章 Mandelbrot Set (曼德布洛特集) 的源代码: http://hi.baidu.com/yangw80/blog/item/eeecc6fb2c4d7f186c22eb23.html 我修改了几个地方: 1. 修改了颜色,使用黑-蓝-白-棕-黑这样的渐变颜色方案(当然,大家可以修改 InitColor() 函数改变配色方案) 2. 增加了放大鼠标选中区域的功能。按鼠标中键可以恢复原尺寸。 3. 将迭代次数提了出来,定义了常量。如果需要绘制更精细的图,请加大常量 ITERATIONS。不过越大绘制的越慢。精细程度开始看不出来,放大次数多了就明显了。 4. 理论上是可以无穷放大,但实际受 double 类型精度的影响,放大到一定程度就会是马赛克了。 先看看逐步放大的效果吧: 另一个位置的逐步放大效果: 代码如下: // 需要安装 EasyX 库,Visual C++ 6.0 编译通过 #include graphics.h #include conio.h // 定义常量 #define ITERATIONS 1000 // 迭代次数,越高,图像越精细 #define MAXCOLOR 64 // 颜色数 ///////////////////////////////////////////////// // 定义复数及乘、加运算 ///////////////////////////////////////////////// // 定义复数 struct COMPLEX { double re; double im; }; // 定义复数“乘”运算 COMPLEX operator * (COMPLEX a, COMPLEX b) { COMPLEX c; c.re = a.re * b.re - a.im * b.im; c.im = a.im * b.re + a.re * b.im; return c; } // 定义复数“加”运算 COMPLEX operator + (COMPLEX a, COMPLEX b) { COMPLEX c; c.re = a.re + b.re; c.im = a.im + b.im; return c; } ///////////////////////////////////////////////// // 定义颜色及初始化颜色 ///////////////////////////////////////////////// // 定义颜色 int Color ; // 初始化颜色 void InitColor() { // 使用 HSL 颜色模式产生角度 h1 到 h2 的渐变色 int h1 = 240, h2 = 30; for(int i=0; iMAXCOLOR/2; i++) { Color = HSLtoRGB((float)h1, 1.0f, i * 2.0f / MAXCOLOR); Color = HSLtoRGB((float)h2, 1.0f, i * 2.0f / MAXCOLOR); } 2 分形学:可以无穷放大的 Mandelbrot Set (曼德布洛特集) VC 源代码 } ///////////////////////////////////////////////// // 绘制 Mandelbrot Set (曼德布洛特集) ///////////////////////////////////////////////// void Draw(double fromx, double fromy, double tox, double toy) { COMPLEX z, c; for(int x=0; x640; x++) { c.re = fromx + (tox - fromx) * (x / 640.0); for(int y=0; y480; y++) { c.im = fromy + (toy - fromy) * (y / 480.0); z.re = z.im = 0; for(int k=0; kITERATIONS; k++) { if ( z.re*z.re + z.im*z.im 4.0 ) break; z = z * z + c; } putpixel(x, y, (k = ITERATIONS) ? 0 : Color ); } } } ///////////////////////////////////////////////// // 主函数 ///////////////////////////////////////////////// void main() { // 初始化绘图窗口及颜色 initgraph(640, 480); InitColor(); // 初始化 Mandelbrot Set(曼德布洛特集)坐标系 double fromx, fromy, tox, toy; fromx = -2.1; tox = 1.1; fromy = -1.2; toy = 1.2; Draw(fromx, fromy, tox, toy); // 捕获鼠标操作,实现放大鼠标选中区域 MOUSEMSG m; bool isLDown = false; int selfx, selfy, seltx, selty; // 定义选区 while(!kbhit()) { m = GetMouseMsg(); // 获取一条鼠标消息 switch(m.uMsg) { // 按鼠标中键恢复原图形坐标系 case WM_MBUTTONUP: fromx = -2.1; tox = 1.1; 3 分形学:可以无穷放大的 Mandelbrot Set (曼德布洛特集) VC 源代码 fromy = -1.2; toy = 1.2; Draw(fromx, fromy, tox, toy); break; // 按鼠标左键并拖动,选择区域 case WM_MOUSEMOVE: if (isLDown) { rectangle(selfx, selfy, seltx, selty); seltx = m.x; selty = m.y; rectangle(selfx, selfy, seltx, selty); } break; // 按鼠标左键并拖动,选择区域 case WM_LBUTTONDOWN: setcolor(WHITE); setwritemode(R2_XORPEN); isLDown = true; selfx = seltx = m.x; selfy = selty = m.y; rectangle(selfx, selfy, seltx, selty); break; // 按鼠标左键并拖动,选择区域 case WM_LBUTTONUP: rectangle(selfx, selfy, seltx, selty); setwritemode(R2_COPYPEN); 4 分形学:可以无穷放大的 Mandelbrot Set (曼德布洛特集) VC 源代码 isLDown = false; seltx = m.x; selty = m.y; if (selfx == seltx || selfy == selty) break; // 修正选区为 4:3 int tmp; if (selfx seltx) {tmp = selfx; selfx = seltx; seltx = tmp;} if (selfy selty) {tmp = selfy; selfy = selty; selty = tmp;} if ( (seltx - selfx) * 0.75 (selty - selfy) ) { selty += (3 - (selty - selfy) % 3); selfx -= (selty - selfy) / 3 * 4 / 2 - (seltx - selfx) / 2; seltx = selfx + (selty - selfy) / 3 * 4; } else { seltx += (4 - (seltx - selfx) % 4); selfy -= (seltx - selfx) * 3 / 4 / 2 - (selty - selfy ) / 2; selty = selfy + (seltx - selfx ) * 3 / 4; } // 更新坐标系 double f, t; f = fromx + (tox - fromx) * selfx / 640; t = fromx + (tox - fromx) * seltx / 640; fromx = f; tox = t; f = fromy + (toy - fromy) * selfy / 480; t = fromy + (toy - fromy) * selty / 480; fromy = f; toy = t; // 画图形 Draw(fromx, fromy, tox, toy); break; } } getch(); closegraph(); } 扩展阅读:   有关美国哈佛大学丽莎•兰道尔背景资料 ==  ★  ==   超弦论的研究进展(Developments in Superstring Theory) http://bbs.sciencenet.cn/home.php?mod=spaceuid=289142do=blogid=412977
个人分类: 科学八卦|5760 次阅读|4 个评论
作假的方法----教你一招
热度 11 lixuekuan 2011-2-19 16:06
作假的方法----教你一招
中国人喜欢拍合影,被拍的人多了难免拍照的时候有人闭眼,或者表情特别难看,影响整个照片的效果。以前胶片照片对这样的问题很难办,数码照片就简单多了,通过移花接木把照片美化一下估计没有人反对。 现在拍合影很少拍一次,摄影师都是要拍3--5张,这就是为了防止有人闭眼,为后期“作假”做准备哪。 我下面在照片里添加一个月亮作为例子,来说明数码照片后期怎么“作假”的。 替换头像和这是一个道理,仅仅是抠合影人头的时候费点时间,因为月亮是一个规则图形,人头不规则而已。 首先在Photoshop软件里打开一个单独拍的月亮: 鼠标点击红点地方的“快速选择”工具 鼠标对着月亮中间点击,月亮边成为虚线。 点击“编辑”的“拷贝” 打开你要“作假”的照片 在新照片里点击“编辑”里的“粘贴” 一个月亮出现在这个照片里 月亮大小和位置肯定不合适,点击“编辑”中的“变换”中的“缩放” 使用鼠标拉伸月亮边的边框,让其大小合适,再使用鼠标拉到合适位置。 保存现在的图像就是一个添加的月亮的照片,作假结束。 没有添加月亮的照片在《 元宵节快乐----欢庆的礼花 》,大家可以比较一下,是不是有添加的痕迹。 如果有人说是“标题党”我也可以承认,可摄影界就有人使用这样的雕虫小技得大奖呀。
个人分类: 生活点滴|5095 次阅读|22 个评论
Cairo 中的文字渲染模型
lry198010 2010-7-23 23:13
图示,Cairo中的文字的图形模型在 http://cairographics.org/tutorial/ 有比较详细的说明,最近因为需要,根据这个说明做了更详细的图示说明。 在select_font_face(font_family,slant,weight)中可用的一般有字体有:serif, sans-serif, cursive, fantasy, monospace等标准CSS2的一般性字体;可用的slant是:normal,italic和oblique;可用的weight是:normal和bold。 对于含有fgjpqyQ的字符窜来说,其高度和宽度分别为width 和abs(y_bearing)+descent,对于不含有这些字符的字符串来说,其宽度和高度分别为width和abs(y_bearing)
个人分类: R|5304 次阅读|0 个评论
美化你的matlab图形之一:自画坐标轴
热度 2 wjwqbit 2010-3-18 02:28
%功能:该例程演示绘坐标轴,绘三组任意函数y1、y2、y3波形于同一坐标中,并能从图中读出周期(对于周期函数)。 %作者:王佳旺 %日期:2010.03.09 clear; clc; %-画坐标轴------------------------------------------------------------------------- Coef_X= 1;%可以修改 表示坐标的伸缩度 Coef_Y= 1;%可以修改 表示坐标的伸缩度 A1=50 ; %信号1的幅度 不能为0 A2=50; %信号2的幅度 不能为0 A3=50 ; %信号3的幅度 不能为0 f1=20; %信号1的频率(Hz) f2=20; %信号2的频率(Hz) f3=20; %信号3的频率(Hz) %w─默认的背景色,b─蓝色,black─黑色c─青色, %g─绿色,r─中国红,'k'黑色(同black),'m'紫红色y'黄色, f1Color='g' %信号1的颜色 f2Color='y' %信号2的颜色 f3Color='c' %信号3的颜色 w01=0; %信号1的初始相位 w02=pi/8; %信号2的初始相位 w03=pi/16; %信号3的初始相位 Display_maxT_Num =2 ; %周期最大的信号在图中显示的个数 N=655360; %采样率 %以上为可设置的参数 %以下程序不要修改 minf=min(f1,f2); minf=min(minf,f3); maxT=1/minf; maxX=Display_maxT_Num*maxT maxA=max(A1,A2); maxA=max(maxA,A3); i= ; t=i/N; w1=2*pi*f1*t+w01;%取n个周期 w2=2*pi*f2*t+w02;%取n个周期 w3=2*pi*f3*t+w03;%取n个周期 y1= A1*cos(w1); %句末不用;在主窗口可显示该行变量的数据 y2= A2*cos(w2); y3= A3*cos(w3); plot(t,y1,f1Color,t,y2,f2Color,t,y3,f3Color); hold on axis off axis( ) %h_a=findobj(gcf,'type','axes'); %xa=get(h_a,'XTickLabel') %ya=get(h_a,'YTickLabel'); %xa=str2num(xa); %ya=str2num(ya); whitebg('black') %使当前及以后绘制的所有图形窗口的背景色为黑色 line( , ,'Color','r'); hold on %画Y轴线 line( , ,'Color','r'); hold on %line( , ,'Color','r'); %画X轴箭头 Xxx= ; Xyy= ; plot(Xxx,Xyy,'r') hold on fill(Xxx',Xyy','r') %画Y轴箭头 Yxx= ; Yyy= ; plot(Yxx,Yyy,'r') grid on hold on fill(Yxx',Yyy','r') %坐标名称 xlabel('时间/秒'); ylabel('幅值/伏'); %标注X轴线 for i=0:maxX/10:maxX-maxX/10 text(i,-maxA/10,num2str(i*Coef_Y),'Color','w'); %标注X轴线数值 text(i,0,'|','FontSize',12,'Color','r'); %标注X轴线数值的位置 end %标注Y轴线 for i=-maxA:maxA/10:maxA text(-maxX/30,i,num2str(i*Coef_Y),'Color','w'); %标注Y轴线数值 text(0,i+0.35,'-','FontSize',12,'Color','r'); %标注Y轴线数值的位置 end grid on %-------------------------------------------------------------------------- 美化你的matlab图形之一源代码
个人分类: matlab应用|16523 次阅读|1 个评论
mirror - 说明、证明的难点——如何教授孩子图形的证明?
liwei999 2010-3-7 08:47
说明、证明的难点如何教授孩子图形的证明? (1911 bytes) Posted by: mirror Date: March 06, 2010 08:17AM 正方形沿对角线对折,两个角重叠。这个事实孩子可以通过折纸体会,但是如何证明呢?最典型的就是用几何证明的方法了。当然还有解析几何的方法。问题是十三、四的孩子是如何思考的呢?这是个有趣的现象。 几乎是同一个时间里,科学网上有个问题 热力学系统为什么只有两个独立参量? ( )。说实在的,网上讨论问题的主力就是蒋科学们,而不应该是很严肃地、正经八百地探讨 专业 。虽然人们幻想去讨论科学,但是不客气地说,门槛相当高。有多么高呢?北大学物理的人可以算是佼佼者了吧?能以物理为职业的人恐怕不过10%。 因此,科学网不会成为讨论专(职)业问题的地方,而只能是谈论科学的地方。打个低俗的比方,不是妓院=嫖娼=解决性问题的地方,而是大男学生的集体宿舍=谈论性的地方。之所以要这样说,是因为不这样说很多人就不明白。 回到那个几何证明题上,不用三角形全等的概念如何证明对折后角的顶点重叠呢?用了一天的时间,孩子终于理解了用尺子量(=坐标计算)也是个证明办法。说白了,一张纸可以折叠,一块钢材就折叠不了了。这时候如何办?就是个问题了。 起源的问题 在东方文化中不象在西方的那样深刻。人们认识 起源的问题 不过就是个没有共产党就没有新中国的档次。以前在网上出过一个思考题,如何作一个直角尺?这个问题看起来很简单。但是应该说可以是个奥数题的档次了。另一个类似的题目是如何作出一个正方体来?大约国人的大学生们就知道一个买来的办法。什么叫学问?有人提过教授是否要拼刺刀的问题。镜某认为没有必要在老花了眼年纪去拼刺刀。要紧的问题是能给出一个合理的加工顺序、手续。工程师与工人的区别就是能设计出来这个手续来。 科学的事情还是拜托给蒋科学们为好。热力学的问题,如果是有教学生的任务,镜某可以助一臂之力。如果就是个爱好,镜某以为还是放弃了为好。还是思考一下如何加工立方体吧。 之所以要抛出这样无聊的问题,是因为恶魔都藏在细节当中。先考虑以下这样貌似简单的课题,就可以想像各位博主喜欢讨论的大课(问)题有多么难了。 http://www.starlakeporch.net/bbs/read.php?1,62120
个人分类: 镜子大全|3255 次阅读|1 个评论
工学的本科生该学什么?理论知识还要不要?
maczone 2009-9-26 10:48
这几一天一直在思想一个问题:工学的本科生的专业知识课需不需要理论讲授? 实在很纳闷,我按着制定的教学大纲上课,先讲理论再讲应用,竟然遭到很多学生的责问:我只想毕业时如何应用,这些理论知识我不需要,我又不去考研!更有的学生说,那些直线方程什么的早就忘记。学生们大力推荐另一个老师上课时,全讲基本应用,理论知识全无,他们很喜欢。 因为我与这位老师上的课都是图形图像的课程,而且专业比较特殊《印刷工程》,按大纲的话是既有理论又有应用实践,但为什么现在的学生只想到去如何操作这些图形图像软件呢?如果只想学软件如何用,何必来读四年本科,1-2个月的培训班就可以解决问题。况且,根据以往的经验,到了大四的毕业设计阶段,谁会让你直接拿一个图形图像软件的应用去做毕业设计的课题呢?多少需要一些些基础理论再加上实践应用吧。并且,根据课程设计的效果来看,直接传授软件操作的并没有教出几个可以熟练在本专业知识领域下的应用精品!很显然,这些学生们是把自己与高职高专生等同了。
个人分类: 工作|4005 次阅读|1 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-1 15:50

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部