Matlab畫圖


一、matlab線條符號、標記符、顏色

線型 說明
- 實線(默認)
-- 雙划線
: 虛線
:. 點划線
標記符 說明
+ 加號符
o 空心圓
* 星號
. 實心圓
x 叉號符
s(square) 正方形
d 菱形
^ 上三角形
v 下三角形
> 右三角形
< 左三角形
p(pentagram) 五角星
h(hexagram) 六邊形
pentagram 五角形
hexagram 六角形
顏色 說明
r 紅色
g 綠色
b 藍色
c 青綠色
m 洋紅色
y 黃色
k 黑色
w 白色

二、matlab調色板

1、常用顏色的RGB值

RGB 三元組是包含三個元素的行向量,其元素分別指定顏色中紅、綠、藍分量的強度。強度值必須位於 [0,1] 范圍內,例如 [0.4 0.6 0.7]

⚠️注意: 如果想手動設置顏色,可以根據RGB來計算對應的行向量

如: RGB 顏色(218,31,24) 總和為 sum = 218 + 31 + 24

對應三元組的 r = 218 / sum, g = 31/ sum, b=24/sum

得到 [0.798 0.113 0.087]

顏色 RGB
天藍 [0.67 0 1]
橘黃 [1 0.5 0]
深紅 [0.5 0 0]
[0.5 0.5 0.5]

⚠️注意:MATLAB中調色板色彩強度[0,1],0代表最暗,1代表最亮。

顏色名稱 短名稱 RGB 三元組 十六進制顏色代碼 外觀
'red' 'r' [1 0 0] '#FF0000' img
'green' 'g' [0 1 0] '#00FF00' img
'blue' 'b' [0 0 1] '#0000FF' img
'cyan' 'c' [0 1 1] '#00FFFF' img
'magenta' 'm' [1 0 1] '#FF00FF' img
'yellow' 'y' [1 1 0] '#FFFF00' img
'black' 'k' [0 0 0] '#000000' img
'white' 'w' [1 1 1] '#FFFFFF' img
RGB 三元組 十六進制顏色代碼 外觀
[0 0.4470 0.7410] '#0072BD' img
[0.8500 0.3250 0.0980] '#D95319' img
[0.9290 0.6940 0.1250] '#EDB120' img
[0.4940 0.1840 0.5560] '#7E2F8E' img
[0.4660 0.6740 0.1880] '#77AC30' img
[0.3010 0.7450 0.9330] '#4DBEEE' img
[0.6350 0.0780 0.1840] '#A2142F' img

2、產生標准調色板的函數

函數名 調色板
Hsv 色彩飽和度,以紅色開始,並以紅色結束
Hot 黑色-紅色-黃色-白色
Cool 青藍和洋紅的色度
Pink 粉紅的色度
Gray 線型灰度
Bone 帶藍色的灰度
Jet Hsv的一種變形,以藍色開始,以藍色結束
Copper 線型銅色度
Prim 三棱鏡,交替為紅、橘黃、黃、綠和天藍
Flag 交替為紅、白、藍和黑

缺省情況下,調用上述函數灰產生一個64×3的調色板,用戶也可指定調色板大小。

三、matlab線條

Matlab畫的線較多時,線的顏色的選取對圖的美觀是有很大的影響的。 Jonathan C. Lansey

Matlab-code提供了在不同線上畫不同顏色簡單易用的函數。

Examples demonstrating thecolors.

% LINECOLORS 
N=6; 
X =linspace(0,pi*3,1000); 
Y =bsxfun(@(x,n)sin(x+2*n*pi/N), X.',1:N); 
C =linspecer(N); 
axes('NextPlot','replacechildren','ColorOrder',C); 
plot(X,Y,'linewidth',5) 
ylim([-1.1 1.1]);

% SIMPLER LINE COLOREXAMPLE 
N = 6; X =linspace(0,pi*3,1000); 
C =linspecer(N) 
holdoff; 
forii=1:N 
   Y =sin(X+2*ii*pi/N); 
  plot(X,Y,'color',C(ii,:),'linewidth',3); 
   hold on; 
end

% COLORMAPEXAMPLE 
A =rand(15); 
figure; imagesc(A); % defaultcolormap 
figure; imagesc(A);colormap(linspecer); % linspecer colormap

注:C即為生成的RGB顏色(非常好用)

【用法】

grid 打開網格線 -- 虛線
hold on 命令用於在已畫好的圖形上添加新的圖形

1、例子1

x=0:0.001:10; % 0到10的1000個點(每隔0.001畫一個點)的x座標
y=sin(x); % 對應的y座標
plot(x,y); % 繪圖

注:matlab畫圖實際上就是描點連線,因此如果點取得不密,畫出來就成了折線圖,請試驗之

2 、例子2

Y=sin(10*x);
plot(x,y,'r:',x,Y,'b') % 同時畫兩個函數

3 、若要改變顏色,在座標對后面加上相關字串即可

x=0:0.01:10;
plot(x,sin(x),'r')

4 、若要同時改變顏色及圖線型態(Line style),也是在坐標對后面加上相關字串即可

plot(x,sin(x),'r*')

5、用axis([xmin,xmax,ymin,ymax])函數來調整圖軸的范圍

axis([0,6,-1.5,1])

6 、MATLAB也可對圖形加上各種注解與處理:(見上表)

xlabel('x軸'); % x軸注解
ylabel('y軸'); % y軸注解
title('余弦函數'); % 圖形標題
legend('y = cos(x)'); % 圖形注解
gtext('y = cos(x)'); % 圖形注解 ,用鼠標定位注解位置
grid on; % 顯示格線

7、畫橢圓

a = [0:pi/50:2*pi]'; %角度
X = cos(a)*3; %參數方程
Y = sin(a)*2;
plot(X,Y);
xlabel('x'), ylabel('y');
title('橢圓')

8 、繪制函數 在0 ≤ x ≤ 1時的曲線。

x=0:0.1:1
y=x.*exp(-x) %為什么用點運算?若不用會怎樣
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')

9 、畫出衰減振盪曲線 與它的包絡線 及 。t 的取值范圍是[0, 4π] 。

t=0:pi/50:4*pi;
y0=exp(-t/3);
y=exp(-t/3).*sin(3*t);
plot(t,y,'-r',t,y0,':b',t,-y0,':b') % -r表示紅色實線,:b表示藍色點線,看上表
grid

10 、在同一個畫面上建立幾個坐標系, 用subplot(m,n,p)命令;把一個畫面分成m×n個圖形區域, p代表當前的區域號,在每個區域中分別畫一個圖

x=linspace(0,2*pi,30); y=sin(x); z=cos(x);
u=2*sin(x).*cos(x); v=sin(x)./cos(x);
subplot(2,2,1),plot(x,y),axis([0 2*pi -1 1]),title('sin(x)')
subplot(2,2,2),plot(x,z),axis([0 2*pi -1 1]),title('cos(x)')
subplot(2,2,3),plot(x,u),axis([0 2*pi -1 1]),title('2sin(x)cos(x)')
subplot(2,2,4),plot(x,v),axis([0 2*pi -20 20]),title('sin(x)/cos(x)')

11、柱狀圖

單柱:每個柱一個顏色

% [value nan nan nan] 數組長度代表柱子的個數,value表示當前位置繪制柱子
bar([3.2 nan nan nan], 'facecolor', [0.855 0.122 0.094] , 'BarWidth',0.4)
hold on
bar([nan 7.89 nan nan], 'facecolor',[0.980 0.427 0.114], 'BarWidth',0.4)
bar([nan nan 14.8 nan], 'facecolor',[0.0275 0.502 0.811], 'BarWidth',0.4)
bar([nan nan  nan 16.8], 'facecolor',[0.957 0.478 0.459], 'BarWidth',0.4)

% 設置x軸刻度的標簽
set(gca,'XTickLabel',{'A','B','C', 'D'})
% 設置字體大小
set(gca,'FontSize',14)

ylabel('Average Localization Error (m)');
xlabel('Algorithms');

y=[37.5 21.2;19.3, 3; 15.4, 3.6;];
b=bar(y);
% 2016r
set(b(1),'FaceColor',[0.0275 0.501 0.812])
set(b(2),'FaceColor',[0.980 0.427 0.114])
% 2017r
% b(2).FaceColor  = '#D2F9A7';

% 設置x軸刻度的標簽
set(gca,'XTickLabel',{'A','B','C'})
% 設置字體大小
set(gca,'FontSize',14)
% 圖例
legend('man','woman');
xlabel('Methods');
ylabel('User Participation(%)');

dbar

12、折線圖


%x軸上的數據,第一個值代表數據開始,第二個值代表間隔,第三個值代表終止
x=1:1:4;

%a數據y值
a=[7.93,  8.67,  8.55,  9.08 ]
%b數據y值
b=[11.54, 9.39,  9.82,  11.78]
%c數據y值
c=[24.11, 25.82, 29.96, 27.56]

plot(x,a,'-*b', x,b,'-or', x,c,'-xg'); %線性,顏色,標記

% axis([0,6,0,700])  %確定x軸與y軸框圖大小

set(gca,'XTick',[1:1:7]) %x軸范圍1-6,間隔1
% set(gca,'YTick',[0:100:700]) %y軸范圍0-700,間隔100
%右上角標注
legend('DNN','KNN', 'SVM');
set(gca,'XTickLabel',{'0','1','2','3'})
xlabel('Floor')  %x軸坐標描述
%y軸坐標描述
ylabel('Average Localization Error(m)')

13、餅圖

% x = [25, 46]
x = [18, 50, 3]
pie3(x)
legend('bachelor','postgraduate', 'doctor')

14、累計分布圖 CDF

% 注:原始數據太多,為了方便展示,此處僅放置部分數據
% original
original = [1.33, 2.13, 1.92, 1.9, 1.89, 2.34, 2.48, 2.64, 2.11, 2.66];

% random
rand = [3.16, 3.72, 2.37, 3.05, 2.72, 2.53, 2.04, 2.33, 1.32, 1.87];

% internal 2
int2 = [1.54, 2.43, 2.04, 1.87, 2.21, 2.44, 2.9, 2.9, 2.59, 2.74];

% mix2
mix2 = [4.72, 5.47, 6.05, 5.96, 5.29, 4.51, 4.15, 4.39, 4.21, 4.21];

ho= cdfplot(original);
set(ho,'color','r','Linewidth',1);
hold on;
hrand= cdfplot(rand);
set(hrand,'color','g','Linewidth',1);
hold on;
hr2= cdfplot(int2);
set(hr2,'color','b','Linewidth',1);
hold on;

hold on;
hm2= cdfplot(mix2);
set(hm2,'color','m','Linewidth',1);
hold on;

legend('Original','Random', 'Interval-2','Mix-2');
xlabel('Localization Errors(m)') 
%y軸坐標描述
ylabel('CDF')

15.折線圖和條形圖的雙軸圖

參考:吃小羊 作圖實例13

使用創建具有兩個y軸的圖表yyaxis。圖形函數以圖表的活動面為目標。使用控制活動側yyaxis。使用左y軸繪制條形圖。使用右y軸繪制折線圖。將條形圖系列對象和圖表線對象分配給變量。

days = 0:5:35;
temp = [29 23 27 25 20 23 23 17];
conc = [515 420 370 250 135 120 60 20];


%控制左縱軸
yyaxis left
%繪柱狀圖,賦值圖形句柄給b
b = bar(days,temp);
% 2016r
set(b(1),'FaceColor',[0.0275 0.501 0.812])

% 2017r
% b(2).FaceColor  = '#D2F9A7';
%控制右縱軸
yyaxis right
%繪折線圖,賦值圖形句柄給p
p = plot(days,conc);

title('Temperature and Concentration Data')
xlabel('Length')
%控制左縱軸
yyaxis left
ylabel('Average Localization Error(m)')

%控制右縱軸
yyaxis right
ylabel('Running Time')
%設置線寬
p.LineWidth = 3;
%設置柱面顏色
b.FaceColor = [ 0 0.447 0.741];

16.多圖繪制

% 需要matlab R2019b
x = linspace(0,30);
y1 = sin(x);
y2 = sin(x/2);
y3 = sin(x/3);
y4 = sin(x/4);

% Create plots
t = tiledlayout(2,2); % Requires R2019b or later %獲得圖形窗口對象
nexttile
plot(x,y1)
nexttile
plot(x,y2)
nexttile
plot(x,y3)
nexttile
plot(x,y4)

matlab 2016

rows = 2;
cols = 2;

subplot(rows,cols,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Subplot 1: sin(x)')

subplot(rows,cols,2)
y2 = sin(2*x);
plot(x,y2)
title('Subplot 2: sin(2x)')

subplot(rows,cols,3)
y3 = sin(4*x);
plot(x,y3)
title('Subplot 3: sin(4x)')

subplot(rows,cols,4)
y4 = sin(8*x);
plot(x,y4)
title('Subplot 4: sin(8x)')

四、結果圖編輯

如果想根據需求修改線條的顏色、文字大小

可以通過 編輯圖形屬性 來對圖中的元素進行調整

五、matlab導出

具體設置如下:

文件→導出設置

渲染→分辨率→設置600

字體→自定義粗細→選擇粗

線條→使用固定線寬 2 磅

→應用於圖形→

1.eps格式圖片

適合在latex的小論文

導出→保存eps格式文件

2.emf格式圖片

能夠在Word高清顯示

導出→保存emf格式文件


免責聲明!

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



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