Matlab 各類畫圖 ∈ Matlab 使用筆記

主博客:http://www.javashuo.com/article/p-hmmjqkfy-nc.htmlhtml

1.plot函數畫曲線圖

plot(x,y);   //其中x,y爲長度相同的向量,存儲x座標和y座標。
plot(x1,y1,x2,y2,…,xn,yn);  //包含若干組向量對,每一組能夠繪製出一條曲線.
//若x,y都是含有三列的矩陣,它們組成輸入參數對,則繪製三條曲線;
plot(M);  //M是一個m*n矩陣,繪圖時以 列數 爲x 座標,以矩陣值爲 y 座標,繪製出 n 條曲線,每條曲線上有m 個點。

爲了讓圖形更加美觀,能夠添加一些輔助元素:web

線型 顏色 標記符號 標記符號
- 實線 b 藍色 . 點 s 方塊
: 虛線 g 綠色 o 圓圈 d 菱形
-. 點劃線 r 紅色 x 叉號 v 朝上三角
– 雙劃線 c 青色 + 加號 ^ 朝下三角
m 品紅 * 星號 < 朝左三角
y 黃色 > 朝右三角
k 黑色 p 五角星
w 白色 h 六角星

還能夠進一步設置包括線的寬度(LineWidth),標記點的邊緣顏色
(MarkerEdgeColor),填充顏色(MarkerFaceColor)及標記點的大小(MarkerSize)等其它繪圖屬性.
使用示例:app

plot(x,y,'b:p') //前後順序可有可無
plot(x,y,'--rs','LineWidth',2,...        //線型-顏色-線寬
                'MarkerEdgeColor','k',...//邊緣顏色,仨點爲續航符
                'MarkerFaceColor','g',...//填充顏色
                'MarkerSize',10)         //標記點大小

以後還能夠加點圖例等:svg

//字體
%set(gca,'FontName','Times New Roman','FontSize',14,'FontWeight','bold','FontAngle','italic' )%設置座標軸刻度字體名稱,大小,加粗 ,斜體;

title('圖形名稱') //(都放在單引號內)
xlabel('x軸說明')
ylabel('y軸說明')
text(x,y,'圖形說明')
legend('圖例1','圖例2',)
//除legend函數外,其餘函數一樣適用於三維圖形,在三維中z座標軸說明用zlabel函數。
axis([xmin xmax ymin ymax zmin zmax])
axis equal //縱橫座標軸採用等長刻度
axis square //產生正方形座標系(默認爲矩形)
axis auto //使用默認設置
axis off //取消座標軸
axis on  //顯示座標軸
grid on/off  //命令控制畫仍是不畫網格線
box on/off  //給座標加邊框仍是不加邊框
hold on/off  //命令是保持原有圖形仍是刷新原有圖形
//上述幾個 不帶參數 就是在二者之間切換
subplot(m,n,p)
/*該函數把當前窗口分紅m×n個繪圖區,m行,每行n個繪圖區, 區號按行優先編號。其中第p個區爲當前活動區。 每個繪圖區容許以不一樣的座標系單獨繪製圖形。*/

上述函數中的說明文字,除了使用標準的ASCII字符外,還可使用LaTex(一種流行的數學排版軟件)格式的控制字符,這樣就能夠在圖形上添加希臘字符,數學符號和公式等內容。在Matlab支持的LaTex字符串中,用/bf , /it , /rm控制字符分別定義黑體、斜體和正體字符,受LaTex字符串控制部分要加大括號{}括起來。例如,text(0.3,0.5,'the usful {/bf MATLAB}'),將使MATLAB一詞黑體顯示。一些經常使用的LaTex字符見表,各個字符能夠單獨使用也能夠和其餘字符及命令配合使用。如text(0.3,0.5,'sin({/omega}t+{/beta})')
經常使用的希臘字母的LaTex 格式以下表所示:函數

標識符 符號 標識符 符號 標識符 符號
\alpha α \alpha \epsilon ϵ \epsilon \infty \infty
\beta β \beta \eta η \eta \int \int
\gamma γ \gamma \Gamma Γ \Gamma \partial \partial
\delta δ \delta \Delta Δ \Delta \leftarrow \leftarrow
\theta θ \theta \Theta Θ \Theta \rightarrow \rightarrow
\lambda λ \lambda \Lambda Λ \Lambda \downarrow \downarrow
\xi ξ \xi \Xi Ξ \Xi \uparrow \uparrow
\pi π \pi \Pi Π \Pi \div ÷ \div
\omega ω \omega \Omega Ω \Omega \times × \times
\sigma σ \sigma \Sigma Σ \Sigma \pm ± \pm
\phi ϕ \phi \Phi Φ \Phi \leq \leq
\psi ψ \psi \Psi Ψ \Psi \geq \geq
\rho ρ \rho \tau τ \tau \neq \neq
\nu ν \nu \chi χ \chi \exists \exists
\mu μ \mu \zeta ζ \zeta \forall \forall

使用示例:字體

x=linspace(0,2*pi,100);
y1=sin(x);
plot(x,y1,':r');
title('使用示例');
text(1,0,'0');%標註(1,0)ylabel('\Gamma');
xlabel('\theta');
axis equal %縱橫座標軸採用等長刻度
grid on
box on
hold on

在這裏插入圖片描述

2.用矩陣畫圖

1.首先加載一個矩陣:
在這裏插入圖片描述
能夠看到,矩陣當中有nan,也有正常數據。爲了能夠總覽全局,我將這些數據放到Excel裏面,而後在縮小一下以下圖:
在這裏插入圖片描述
而後對矩陣的特徵進行一下介紹:spa

[a,b]=size(m);
num=a*b-numel(find(isnan(a)));                  %矩陣中除了nan外全部元素的個數
m1=reshape(m,a*b,1);      %搞成一個列向量
max1=max(m1);             %計算最大值
min1=min(m1);             %計算最小值
mean1=nanmean(m1);        %計算除nan以外的均值
mode1=mode(m1);           %除了nan 返回值最小的那個衆數
med1=nanmedian(m1);       %求除了nan的中位數
//////
217x217
max1=20.21
min1=1.22
med1=7.055

對數據的樣子有了一個大概的瞭解,下面開始嘗試畫圖。.net

代碼 圖像
在這裏插入圖片描述
imshow(SST); 在這裏插入圖片描述
imshow(SST,[]); 在這裏插入圖片描述
F1=mapminmax(SST); %F1 ∈[-1,1]
F1=F1.*0.5+0.5; %F1 ∈[0,1]
% [y,ps] = mapminmax(SST);
% ps.ymin = 0;
% [y,ps] = mapminmax(SST,ps); %這三行與上面兩行殊途同歸
在這裏插入圖片描述
imagesc(SST); 在這裏插入圖片描述
contourf(SST,‘LineStyle’,‘none’);
colormap(jet);colorbar
在這裏插入圖片描述
pcolor(SST); 在這裏插入圖片描述
A=[0.8 0.1 0.5
0.2 0.4 0.7
0.5 0.3 0.6];
imagesc(A);
colormap jet
colorbar;
在這裏插入圖片描述
A=[0.8 0.1 0.5
0.2 0.4 0.7
0.5 0.3 0.6];
imagesc(A);
colorbar
caxis([0 1])
[M, N] = size(A);
set(gca, ‘XTick’, 1:M,‘XTickLabel’, {‘0’,‘1’,‘2’})%X座標軸刻度數據點位置、字符
set(gca, ‘YTick’, 1:N, ‘YTickLabel’, {‘0’,‘1’,‘2’})
loc = get(xlabel(’’), ‘position’);
text(loc(1), loc(2), loc(3), ‘Predicted label’, ‘HorizontalAlignment’,‘center’);
set(gca, ‘XAxisLocation’, ‘top’)
ylabel(‘True label’)
title(‘Confusion matrix’)
在這裏插入圖片描述

目前就會這幾種,第六個最好用;imshow()只能顯示灰度在[0,1]之間的,大於1的顯示爲白色;imagesc()將圖像顯示爲彩色,沒有取值限制;colormap()可將圖像顯示爲彩色,關於colormap能夠參看下面的文章:3d

https://blog.csdn.net/weixin_42943114/article/details/81811556code

爲了方便看,盜個圖:
在這裏插入圖片描述

3.矩陣轉tiff

用的仍是2中的那個矩陣

GeoRef = georasterref('Rastersize',size(SST'),'Latlim',[double(min(Lat)),double(max(Lat))],'Lonlim',[double(min(Lon)),double(max(Lon))]);
%數據的寫出
% data = flipud(SST');
SST_Tif = ['C:\Users\hp\Documents\MATLAB\','A20160922016121_01.tif'];
geotiffwrite(SST_Tif,flipud(SST'),GeoRef)

注意圖的正反,下圖纔是正着看的:
在這裏插入圖片描述