1. 程式人生 > >Matlab繪圖高階部分

Matlab繪圖高階部分

圖形是呈現資料的一種直觀方式,在用Matlab進行資料處理和計算後,我們一般都會以圖形的形式將結果呈現出來。尤其在論文的撰寫中,優雅的圖形無疑會為文章加分。本篇文章非完全原創,我的工作就是把見到的Matlab繪圖程式碼收集起來重新跑一遍,修改區域性錯誤,然後將所有的圖貼上來供大家參考。大家可以先看圖,有看中的可以直接把程式碼Copy過去改成自己想要的。

<BR>%% 直方圖圖的繪製 %直方圖有兩種圖型:垂直直方圖和水平直方圖。而每種圖型又有兩種表現模式:累計式:分組式。 figure; z=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5]; % 各因素的相對貢獻份額
colormap(cool);% 控制圖的用色 subplot(2,3,1); bar(z);%二維分組式直方圖,預設的為'group' title('2D default'); subplot(2,3,2); bar3(z);%三維的分組式直方圖 title('3D default'); subplot(2,3,3); barh(z,1);%分組式水平直方圖,寬度設定為1 title('vert width=1'); subplot(2,3,4); bar(z,'stack');%累計式直方圖,例如:1,1+2,1+2+3構成了第一個bar title('stack') subplot(2
,3,5); bar3h(z,0.5,'stacked');%三維累計式水平直方圖 title('vert width=1 stack'); subplot(2,3,6); bar3(z,0.8,'grouped');%對相關資料的顏色進行分組,預設的位'group' title('width=0.8 grouped');

%% =========柱狀圖的進階========== figure; y=[300311;390425;312321;250185;550535;420432;410520;]; subplot(1,3,1); b=bar(y); grid on; set(gca,
'XTickLabel',{'0','1','2','3','4','5','6'}) legend('演算法1','演算法2'); xlabel('x axis'); ylabel('y axis'); %使僅有的一組柱狀圖呈現不同顏色,預設的位相同顏色 data = [1.0,1.0,0.565,0.508,0.481,0.745]; subplot(1,3,2); b = bar(data); ch = get(b,'children'); set(ch,'FaceVertexCData',[4;2;3;1;5;6]);%使用Indexed形式指定每組bar的顏色 set(gca,'XTickLabel',{'C0','C1','C2','C3','C4','C5'}) axis([070.0 1.0]); ylabel('micro F-measure'); %使每個bar顏色不同,預設的是每個元素在不同組的顏色相同 data = [3,7,5,2;4,3,2,9;6,6,1,4]; subplot(1,3,3); b = bar(data); ch = get(b,'children'); set(ch{1},'FaceVertexCData',[1;2;3]);%設定第一個元素在不同組的顏色 set(ch{2},'FaceVertexCData',[1;2;3]);%設定第二個元素在不同組的顏色 set(ch{3},'FaceVertexCData',[1;2;3]); set(ch{4},'FaceVertexCData',[1;2;3]);

%% 彩色柱狀圖 %用到的資料 n = 8; Z = rand(n,1); figure; %預設圖片 subplot(1,3,1); bar(Z); %簡單的作圖 % 這個圖根據資料列中值的大小著色。每列中的值越大,顏色越突出 subplot(1,3,2); h=bar(Z); colormap(summer(n)); ch = get(h,'Children'); fvd = get(ch,'Faces');%針對矩陣時,只能用fvd=get(ch{col},'Faces'),下同 fvcd = get(ch,'FaceVertexCData'); [~, izs] = sortrows(Z,1); for i = 1:n row = izs(i); fvcd(fvd(row,:)) = i; end set(ch,'FaceVertexCData',fvcd) %圖片會以漸變的方式著色,效果非常不錯 subplot(1,3,3); h=bar(Z); ch = get(h,'Children'); fvd = get(ch,'Faces'); fvcd = get(ch,'FaceVertexCData'); [zs, izs] = sortrows(Z,1); k = 128; % 準備生成128*3行的colormap colormap(summer(k)); % 這樣會產生一個128*3的矩陣,分別代表[R G B]的值 % 檢視資料 whos ch fvd fvcd zs izs %   Name       Size            Bytes  Class     Attributes % %   ch         1x1                8 double %   fvcd      66x1              528 double %   fvd       13x4              416 double %   izs       13x1              104 double %   zs        13x1              104 double % shading interp % Needed to graduate colors for i = 1:n color = floor(k*i/n); % 這裡用取整函式獲得color在colormap中行 row = izs(i); % Look up actual row # in data fvcd(fvd(row,1)) =1; % Color base vertices 1st index fvcd(fvd(row,4)) =1; fvcd(fvd(row,2)) = color; % Assign top vertices color fvcd(fvd(row,3)) = color; end set(ch,'FaceVertexCData', fvcd); % Apply the vertex coloring set(ch,'EdgeColor','k');

%% 繪製統計直方圖 %hist(y):如果y是向量,則把其中元素放入10個條目中,且返回每條中的元素的個數;如果y為矩陣,則分別對每列進行處理,顯示多組條形。 %[n,xout]=hist(y,x):非遞減向量x的指定bin的中心。向量xout包含頻率計數與條目的位置。 x=-10:.1:10; y1=randn(2008,1); y2=randn(2008,3); figure; colormap(winter); subplot(2,2,1); hist(y1);%把其中元素放入10個條目中 title('y1為向量,default,n=10'); subplot(2,2,2); hist(y2);%分別對每列進行處理,顯示多組條形 title('y2為矩陣'); subplot(2,2,3); hist(y1,x);%使用者也可以使用[n,xout]=hist(y1,x);bar(xout,n)繪製條形直方圖 title('向量x指定條目'); subplot(2,2,4); hist(y2,1000);%第二個引數為標量時指定bin的數目 title('nbins=1000');

%% ========均值方差直方圖======== a=[8910 7 8 9];%mean b=[111 1 1 1];%std figure(); h=bar(a); ch=get(h,'children'); set(ch,'FaceVertexCData',[4;2;3;1;5;6]);%使用Indexed形式指定每組bar的顏色 hold on; errorbar(a,b,'k','LineStyle','none');

%% =======散點圖scatter , scatter3 , plotmatrix====== %scatter3(X,Y,Z,S,C):在由向量X、Y和Z指定的位置顯示大小和顏色分別由S和C決定的離散點 figure; [x,y,z] = sphere(16); X = [x(:)*.5x(:)*.75x(:)]; Y = [y(:)*.5y(:)*.75y(:)]; Z = [z(:)*.5z(:)*.75z(:)]; S = repmat([1025]*10,numel(x),1); C = repmat([123],numel(x),1); subplot(1,2,1); scatter(X(:),Y(:),S(:),C(:)); title('scatter'); subplot(1,2,2); scatter3(X(:),Y(:),Z(:),S(:),C(:),'filled'), view(-60,60); title('scatter3'); %plotmatrix(X,Y)繪出X(p*M)與Y(p*N)的列組成的散度圖(N,M) figure; X=randn(100,2);Y=randn(100,2);  subplot(1,3,1),plotmatrix(X);%等價於plotmatrix(X,X),除了對角上的圖為X每一列的直方圖hist(X(:,col)) title('plotmatrix(X)'); subplot(1,3,2),plotmatrix(X,X); title('plotmatrix(X,X)'); subplot(1,3,3),plotmatrix(X,Y); title('plotmatrix(X,Y)');

%% =========繪製區域圖=========== %區域圖特點是:在圖上繪製多條曲線時,每條曲線(除第一條外)都是把“前”條曲線作基線,再取值繪製而成。因此,該指令所畫的圖形,能醒目地反映各因素對最終結果的貢獻份額。 figure; x=1:2:9;% 注意:自變數要單調變化 y=magic(5);% 各因素的相對貢獻份額,每一列相當於一個因素 colormap(spring);% 控制圖的用色 area(x,y,4);%area(y)則以列下標作為自變數,第三個引數為基準線(預設為0) set(gca,'layer','top');%圖層設定為top層,顯示網格 title('basevalue=4'); legend(' 因素 A',' 因素 B',' 因素 C','因素D','因素E'); grid on;

%% =========繪製餅狀圖========= %餅圖指令pie和pie3用來表示各元素佔總和的百分數。該指令第二個引數為與第一引數等長的0-1 %向量,1使對應扇塊突出。第三個引數指定個扇區的label figure; colormap(summer);% 控制圖的用色 x=[161721 25 21]; subplot(1,2,1); pie(x,[000 0 1],{'0-10歲兒童','10-20歲兒童','20-35歲青年','35-55歲中年','55歲以上老年'}); subplot(1,2,2); pie3(x,[000 0 1],{'0-10歲兒童','10-20歲兒童','20-35歲青年','35-55歲中年','55歲以上老年'});

%% 繪製填色多邊形。若每列的首尾元素不重合,則將預設把最後一點與第一點相連,強行使多邊形封閉。 %fill和fill3用於繪製填色多邊形 %fill(X1,Y1,C1,X2,Y2,C2,...) %fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,...) %引數12為等長向量時,多邊形的節點數由項鍊長度決定;而當其為矩陣時,每一列對應一個多邊形 %引數3為顏色(用顏色字元r/g/b/c或[r g b]表示) figure; colormap(autumn);% 控制圖的用色 n=10; % 多邊形的邊數 dt=2*pi/n;t=0:dt:2*pi; t=[t,t(1)]; %fill 指令要求資料向量的首位重合,使圖形封閉。 x=sin(t);y=cos(t); subplot(1,2,1); fill(x,y,[110]);axis off % 畫填色多邊形,隱去座標軸。 X=[0.50.50.5 0.5;0.50.5 0.5 0.5;011 0];  Y=[0.50.50.5 0.5;0.50.5 0.5 0.5;001 1]; Z=[111 1;00 0 0;000 0]; C=[100 1;01 0 1;001 0]; subplot(1,2,2); fill3(X,Y,Z,C); view([-1055]); xlabel('x'),ylabel('y');box on;grid on;

%% =======繪製離散資料桿狀圖=========== %stem和stem3函式用於繪製二維或三維的離散資料桿狀圖 %stem(Y)可以理解成繪製離散點的plot(y)函式 %stem(X,Y)可以理解成繪製離散點的plot(x,y)函式 %stem(...,'filled')改變資料點顯示的空、實狀態。 %stem(...,'LINESPEC')Linespec代表直線屬性設定參量。 x=1:.1:10; y=exp(x.*sin(x)); figure; subplot(1,3,1); plot(x,y,'.-r'); title('plot(x,y)'); subplot(1,3,2); stem(x,y,'b'); subplot(1,3,3); stem(x,y,':g','fill'); %繪製三維離散桿狀圖 th=(0:127)/128*2*pi;% 角度取樣點 x=cos(th); y=sin(th); f=abs(fft(ones(10,1),128)); %對離散方波進行 FFT 變換,並取幅值 stem3(x,y,f','cd','fill');%繪製圖形 view([-6530]); xlabel('Real'); %圖形標註 ylabel('Imaginary'); zlabel('Amplitude'); title('FFT example');

%% =======繪製方向和速度向量圖======= %compass-繪製羅盤圖 %feather-繪製羽毛圖 %quiver-繪製二維箭頭圖 %quiver3-繪製三維箭頭圖 %繪製羅盤圖 figure; wdir=[459090 45 360 335360270 335 270 335335]; knots=[668 6 3 9 6 8 9 10 14 12]; rdir=wdir*pi/180; [x,y]=pol2cart(rdir,knots);% 極座標轉化為直角座標 compass(x,y); title('風向和風力') %繪製羽毛圖 figure; alpha=90:-10:0; r=ones(size(alpha)); m=alpha*pi/180; n=r*10; [u,v]=pol2cart(m,n);% 極座標轉化為直角座標 feather(u,v); title('羽毛圖') %羅盤圖和羽毛圖的比較 figure; t=-pi/2:pi/12:pi/2; % 在 區間,每 取一點。 r=ones(size(t)); % 單位半徑 [x,y]=pol2cart(t,r); % 極座標轉化為直角座標 subplot(1,2,1),compass(x,y),title('Compass') subplot(1,2,2),feather(x,y),title('Feather') %繪製箭頭圖 figure; [x,y] = meshgrid(-2:.2:2,-1:.15:1); z = x .* exp(-x.^2- y.^2);  [px,py] = gradient(z,.2,.15); subplot(1,2,1); contour(x,y,z), hold on quiver(x,y,px,py), hold off, axis image title('quiver示例'); [x,y,z]=peaks(15); [nx,ny,nz]=surfnorm(x,y,z);%surfnorm求平面的法向量 subplot(1,2,2) surf(x,y,z); hold on; quiver3(x,y,z,nx,ny,nz); title('quiver3示例');

相關推薦

Matlab繪圖高階部分

圖形是呈現資料的一種直觀方式,在用Matlab進行資料處理和計算後,我們一般都會以圖形的形式將結果呈現出來。尤其在論文的撰寫中,優雅的圖形無疑會為文章加分。本篇文章非完全原創,我的工作就是把見到的Matlab繪圖程式碼收集起來重新跑一遍,修改區域性錯誤,然後將所有的圖貼上來供大家參考。大家可以先看圖,有看中

[數學建模(八)]使用MATLAB繪圖1

基本 barh 分享 com 自定義 subplot mes 1.2 img 目錄 1..二維圖 1.1 基本畫圖功能 1.2 plot參數說明 :線條類型,點類型,顏色 1.3 坐標軸定標和圖形說明 1.4 子圖 :subplot 1.5 其他類型的二維圖

Matlab繪圖基礎——用print函數保存圖片(Print figure or save to file)

prop ont ott char 9.1 pbm tex cti roman 一、用法解析... 1 1.1. 分辨率-rnumber. 1 1.2. 輸出圖片的“格式”formats. 1 二、用法示例... 1 2.1. 設置輸出

Matlab繪圖---坐標系顯示設置

sim 數據 jpg grid tro 另存為 部分 PE 標註 Matlab繪圖---坐標系顯示設置 【@wp20180507-20180511(week 5)】 目錄: 一、設置坐標範圍 二、修改坐標軸顯示的刻度、密度、lable文字、位置等 三、Matlab繪制出來的

針對MATLAB 繪圖時figure圖例中漢字無法識別問題

1.錯誤描述: figure圖例中漢字無法識別,在相應位置顯示正方形 2.錯誤如下圖: 3.錯誤原因: set(gca,'XTickLabel',{'直接設計','優化設計'},'FontSize',15,'FontName','Times New Roman');  

MATLAB--繪圖4

x=[0 1 1 0 0]; y=[0 0 1 1 0]; t=[1 1 1 1 1]; plot(x,y) h=patch(x,y,'b'); h.FaceAlpha=0.5; hold on % axis([-4 4 -4 4]) % axis equal % M=[1 0 2; %  

javaEE工程師面試題(高階部分

java工程師,你需要知道的還有很多!如今的Web工程師,不僅要懂java基礎,框架,servlet,前端,還要會各種框架整合,什麼ssh,ssm.....諸如此類吧。不可否認,這些是根基,但要作為一個高階工程師,面試必然會問到的還包括如下一些,大家好好準備下。 先來個框架的

Matlab繪圖基礎——用print函式批量儲存圖片到檔案(Print figure or save to file)

Matlab繪圖基礎——用print函式批量儲存圖片到檔案(Print figure or save to file) 一、用法解析 1.1. 解析度-rnumber 1.2.  輸出圖片的“格式”formats 二、用法示例 2.1. 設

matlab畫圖顯示部分曲線顯示legend

h1=plot(x1,y1); h2=plot(x2,y2);h3=plot(x3,y3); h4=plot(x4,y4); legend([h1 h3],'x1-y1','x3-y3'); 四線,圖例僅顯示1,3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

php面試題之一——PHP核心技術(高階部分

一、PHP核心技術 1.寫出一個能建立多級目錄的PHP函式(新浪網技術部) <?php /** * 建立多級目錄 * @param $path string 要建立的目錄 * @param $mode int 建立目錄的模式

matlab 繪圖-橫座標角度旋轉

matlab繪圖設定橫座標數值的角度 matlab自帶的包中無法改變橫座標的角度,但往往橫座標的數值過長,容易造成重合,因此需要將橫座標的數值角度進行旋轉: 橫座標旋轉角度函式 呼叫方法 結果展示 橫座標旋轉角度函式 function th=rotatet

Matlab繪圖-很詳細,很全面

Matlab繪圖 強大的繪圖功能是Matlab的特點之一,Matlab提供了一系列的繪圖函式,使用者不需要過多的考慮繪圖的細節,只需要給出一些基本引數就能得到所需圖形,這類函式稱為高層繪圖函式。此外,Matlab還提供了直接對圖形控制代碼進行操作的低層繪圖操作。這類操作將圖

C語言指標高階部分:void指標和資料指標

概念     void指標     資料指標 void指標 void指標的基本概念 void的意思就是“無型別”,void指標則為“無型別指標”,void指標可以指向任何型別的資料。 所以void指標一般被稱為通用指標或者泛

(二)裝置結構模型_高階部分(Bus、Class、Device、Driver)

高階部分(Bus、Class、Device、Driver) 深入,並且廣泛 -沉默犀牛 這篇文章只分析Bus、Class的作用,和表示它們的結構體。不分析介面函式 Bus Bus是處理器與一個或者多個device之間的通道。在裝置模型中,所有的devi

Matlab繪圖(二維)

1、plot 1)、plot(x) —— 預設自變數繪圖格式,x為向量, 以x元素值為縱座標,以相應元素下標為橫座標繪圖 2)、plot(x,y) —— 基本格式,以y(x)的函式關係作出直角座標圖,如果y為n×m的矩陣,則以x 為自變數,作出m條曲線 3)、plot(

ROC曲線詳解及matlab繪圖例項

在訊號檢測理論中,接收者操作特徵曲線(receiver operating characteristic curve,或者叫ROC曲線)是一種座標圖式的分析工具,用於 (1) 選擇最佳的訊號偵測模型、捨棄次佳的模型。 (2) 在同一模型中設定最佳閾值。 在做決策時,ROC分

mongodb 高階部分 group by case when select distinct substr(sdf,0,6)

一、gourp by 和case when 的混用 1、且看一張表格,表格的結構是(其中一條資料) { "_id" : ObjectId("57876215b522253ff42e3346"), "type" : NumberInt(0), "us

MATLAB 繪圖基礎

2011年10月14日 16:04:55 wguoyong 閱讀數:27064 標籤: matlab plot

redis的使用和安裝,redis基礎和高階部分

在後端開發中,為了提高效能,對於一些經常查詢但是又不太變化的內容會使用redis,比如前端的列表展示項等,如果資料有變化也可以清空快取,讓前端查一次資料庫,所以使用redis相對高效和靈活.本文主要對於redis在linux上的使用和安裝進行說明。 1.r

matlab繪圖轉autocad的dwg

寫了一份專利,裡面用到了一些matlab plot出來的圖。專利部的同事讓我轉成autocad的dwg格式。原以為用原始資料在autocad裡畫幾條曲線就ok了。後來想想,沒有那麼簡單。因為圖裡還有網格,橫座標、縱座標以及數值標籤,還有圖例。這樣的工作太浩大了。而且我對au