Matlab 常用繪圖指令(二維圖形)


使用matlab的時候常常會忘掉一些指令,每次都要重新查找,挺麻煩的,這里收集一些常用的繪圖指令,供自己和大家以后方便查找和使用。

 

1、例子-包含了常用繪圖命令

 1 clear
 2 clc
 3 
 4 %%數據准備
 5 x = 0:0.05:1;
 6 y = -x.*log(x);
 7 figure(1);%圖像1
 8 set(gcf, 'color',[0.1 0.5 1]);%設置整體圖片的背景色
 9 
10 %%繪制曲線
11 plot(x,y,'rs-','LineWidth',2,'MarkerEdgeColor','k',...
12     'MarkerFaceColor','g',...
13     'MarkerSize',10);
14 
15 %%在最大值位置添加文本
16 xe = 1/exp(1);
17 ye = -xe*log(xe);
18 hold on;
19 plot(xe,ye,'pb', 'MarkerSize', 15,'MarkerEdgeColor','k','MarkerFaceColor','m');
20 text(xe-0.02,ye+0.03,['最大值點(',num2str(xe,3),',',num2str(ye,3),')'],...
21     'FontSize',12, 'Color',[0.9 0.1 0.5], 'FontWeight','bold');
22 
23 %%設置標題
24 title('函數y = xlogx','Color','k','FontSize',30);
25 
26 %%坐標軸標題設置
27 xlabel('xlogx','Color','k','FontSize',20);%橫軸標題
28 ylabel('y','Color','k','FontSize',20);%縱軸標題
29 
30 %%坐標軸刻度設置
31 set(gca, 'ytick',x,'yticklabel',x,'xtick',x,...
32     'xticklabel',x, 'color',[0.8 0.9 0.9],...
33     'FontSize',10); %xtick就是你要在哪些地方顯示刻度,xticklabel就是顯示什么內容
34 
35 %%坐標軸顯示范圍設置
36 axis equal  %強制坐標軸尺度相同,這個放在前面或者后面效果會不一樣
37 xlim([0 1]);%x軸范圍
38 ylim([0 0.5]);%y軸范圍
39 
40 %%設置Legend
41 hleg = legend('y=xlogx','Location','SouthWest');%本身不能設置字體的大小,需要通過set進行設置
42 set(hleg,'FontSize', 15, 'FontAngle','italic','FontWeight','bold',...
43     'TextColor',[.6,.2,.1],'Color',[1,1,1]);%Color為設置坐標的背景顏色
44 
45 %%網格設置
46 % grid on;%最簡單的方式
47 % set(gca,'XMinorGrid','on','YMinorGrid');%設置最小網格,可以只設置其中的一種
48 set(gca,'XGrid','on','YGrid','on');%設置大網格,可以只設置其中的一種
49 
50 %%全屏顯示figure
51 scrsz = get(0,'ScreenSize');
52 set(gcf,'Position',scrsz);
53 
54 %%保存圖像
55 set(1, 'InvertHardCopy', 'off');%設置的背景色有效,如果為on則圖形不保存背景色,maltab 默認為 on
56 filename = 'xlogx';
57 %print(1, '-djpeg', filename);%其他格式 -djpeg,-dpng,-dbmp,-dtiff,-dgif
58 saveas(1,filename,'png');%保存成圖片,其他格式 jpeg,png,bmp,tiff,gif,另一種保存圖像的方法
59 saveas(1,filename,'fig');%保存成figure文件

 

  以上代碼的效果圖如下所示:

 

2、線型、點標記和顏色

Matlab繪制曲線,主要包含三類屬性,分別是曲線的類型,點標記及其顏色。默認下通過這三種符號的組合形成一個字符串來表現曲線。搭配的形式為:

‘線型+顏色+標記點’,例如'-r+'表示曲線為實直線,紅顏色,曲線穿插有‘+’的點標記符。如下例子所示:

1 figure
2 t = 0:pi/20:2*pi;
3 plot(t,sin(t),'-.r*');
4 hold on
5 plot(t,sin(t-pi/2),'--mo');
6 plot(t,sin(t-pi),':bs');
7 hold off

 

 效果如下圖所示:

 

下面給出了一些常用的線型,點標記和顏色類型:  

線型 顏色 標識符
指示符 線型 指示符 線型 指示符 線型
'-' 實線(默認) r 紅色 '+' 加號
'--' 雙划線 g 綠色 'o' 圓圈
':' 虛線 b 藍色 '*' 型號
'-.' 點划線 c 藍綠色 '.'
'none' 無線,不顯示 m 洋紅色 'x' 叉號
    y 黃色 'square' or 's' 正方形
    k 黑色 'diamond' or 'd' 菱形
    w 白色 '^' 朝上三角符號
        'v' 朝上三角符號
        '>' 朝右三角符號
        '<' 朝左三角符號
        pentagram' or 'p' 五角星
        'hexagram' or 'h''' 六角星
        'none' 無標識符(默認)

 

 3、多圖顯示在一個Figure中 

需要用到subplot(m,n,p)函數,m表示行數,n表示列數,p表示第p個圖,功能為:表示在m行n列的圖上繪制第p個子圖像;

實現代碼如下:

 1 x = 0:0.1:20
 2 
 3 %圖1
 4 y1 = sin(x).*cos(x)./x;
 5 figure(1);
 6 subplot(2,2,1);%子圖1
 7 plot(x,y1,'r');
 8 title('y=sin(x)');
 9 xlabel('x');
10 ylabel('y');
11 
12 %圖2
13 y2 = cos(x)./x;
14 figure(1);
15 subplot(2,2,2);%子圖2
16 plot(x,y2,'b');
17 title('y=cos(x)');
18 xlabel('x');
19 ylabel('y');
20 
21 %圖3
22 y3 = x.*sin(x);
23 figure(1);
24 subplot(2,2,3);%子圖3
25 plot(x,y3,'k');
26 title('y=cos(x)');
27 xlabel('x');
28 ylabel('y');
29 
30 %圖4
31 y4 = x.*cos(x.^0.5);
32 figure(1);
33 subplot(2,2,4);%子圖4
34 plot(x,y4,'m');
35 title('y=cos(x)');
36 xlabel('x');
37 ylabel('y');
38 
39 %%全屏顯示figure
40 scrsz = get(0,'ScreenSize');
41 set(gcf,'Position',scrsz);
42 %%設置顏色
43 set(gcf, 'color',[0.1 0.5 1]);%設置整體圖片的背景色
44 set(1, 'InvertHardCopy', 'off');%設置的背景色有效,如果為on則圖形不保存背景色,maltab 默認為 on
45 saveas(1,'result','png');%保存成圖片,其他格式 jpeg,png,bmp,tiff,gif,另一種保存圖像的方法

 

效果圖如下:

 

4、句柄,以及gcf,gca和gco三者的區別

  圖形句柄的理解

  Matlab和Windows中的句柄類似,Figure是Matlab中最常用的圖像對象。假設現在又多個Figures(我們視他們為對象),想對其中某個Figure進行操作,未完成這樣的功能,Matlab給每個FIgure都分配了一個不同的ID(是一個數,例如1,2,3,...),而這個ID就是一個句柄。有了這個句柄我們就可以對指定相應的圖形窗口,進行相應的操作,如顏色設置,字體設置和線型設置等。下面是一個關於三個圖形操Figure作的例子: 

 1 clc
 2  close all
 3 %%產生三個句柄
 4 figure(1)%產生一個圖形figure,並賦予句柄值為1
 5 figure(2)%產生一個圖形figure,並賦予句柄值為2
 6 figure(3)%產生一個圖形figure,並賦予句柄值為3
 7 
 8 %%操作Figure2
 9 %handle = 2;%這是錯誤的指定方式
10 handle = figure(2);%獲取figure2的句柄
11 surf(peaks);
12 title('Figure2','Color','w','FontSize',20);
13 
14 set(handle,'Color',[0,0.5,0.5],'Toolbar','none')
15 set(handle, 'InvertHardCopy', 'off');%設置的背景色有效,如果為on則圖形不保存背景色,maltab 默認為 on
16 
17 %%操作Figure1
18 handle = figure(1);%獲取figure1的句柄
19 set(handle, 'InvertHardCopy', 'off');%設置的背景色有效,如果為on則圖形不保存背景色,maltab 默認為 on
20 surf(peaks);
21 title('Figure1','Color','w','FontSize',20);
22 set(handle,'Color',[0,0.0,0.5],'Toolbar','none')
23 
24 %%操作Figure3
25 handle = figure(3);%獲取figure3的句柄
26 set(handle, 'InvertHardCopy', 'off');%設置的背景色有效,如果為on則圖形不保存背景色,maltab 默認為 on
27 surf(peaks);
28 title('Figure3','Color','w','FontSize',20);
29 set(handle,'Color',[0.5,0.0,0.5], 'Toolbar','none')
30 
31 saveas(1,'1','png');
32 saveas(2,'2','png');
33 saveas(3,'3','png');

  結果如下圖所示:  

  除了常用的Figure外,Axes也是常用的句柄,還有其他的對象,它們是用以顯示圖形和用戶界面元素的基本元素,但用的較少,下表列出了各種圖形對象:

對象 描述
Root 對計算機屏幕最高級的對象
Figure 用來顯示圖形和用戶界面的窗口
Axes 在窗口中顯示圖形的軸
Uicontrol 用戶界面控制。執行一個對用戶交互作用的函數。
Uimenu 用戶定義窗口菜單
Uicontextmenu 右鍵單擊對象時彈出的菜單
Image 二維像素基礎圖
Light 影響斑點和表面對象着色的光源
Line 用於諸如plot,plot3,semilogx,等函數的線
Patch 帶邊緣的填充多邊形
Rectangle 二維形狀,從矩形到橢圓
Surface 由x-y平面以上的數據值所作圖創建的矩陣數據的三維表示
Text 字符串

  gcf,gca和gco

  gcf 返回當前Figure 對象的句柄值,可以操作圖形的整體效果,如背景色,圖形打印設置等
  gca 返回當前axes 對象的句柄值,可以操作坐標軸的效果,包括了坐標軸的刻度,顯示范圍,字體大小,字體磅數(普通,加粗),字體方向(斜體,正體)
  gco 返回當前鼠標單擊的句柄值,該對象可以是除root 對象外的任意圖形對象,並且Matlab 會把當前圖形對象的句柄值存放在Figure 的CurrentObject屬性中。

 

4、參考資料

  [1]. http://blog.sina.com.cn/s/blog_675eb4fd0100tvhp.html

  [2]. http://www.cnblogs.com/CBDoctor/archive/2012/04/06/2434072.html

  [3]. http://blog.csdn.net/wguoyong/article/details/6873877

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM