MATLAB畫圖技巧與例項(四):填充圖area函式
在科研中,不管是
實驗資料
還是做
模擬預測
,往往都需要給出資料的
置信區間
、
誤差限
等值,在畫圖時需給出
誤差帶
。此時,就需要用到
填充圖
,在MATLAB中,可以用
area函式
實現。
1 area函式的基本用法
area
(
Y
)
area
(
X
,
Y
)
area
(
。。。,basevalue)
area
(
。。。,Name,Value)
area
(
ax
,
。。。)
ar
=
area
(
。。。)
區域圖將 Y 中的元素顯示為一個或多個曲線並填充每個曲線下方的區域。如果 Y 為
矩陣
,則曲線堆疊在一起,顯示每行元素佔每個 x 區間的曲線總高度的相對量。
area(Y) 繪製向量 Y 或將矩陣 Y 中每一列作為單獨曲線繪製並堆疊顯示。x 軸自動縮放到 1:size(Y,1)。Y 中的值可以是數值或持續時間值。
area(X,Y) 繪製 Y 對 X 的圖,並填充 0 和 Y 之間的區域。X 的值可以是數值、日期時間、持續時間或分類值。
如果 Y 是向量,則將 X 指定為由遞增值組成的向量,其長度等於 Y。如果 X 的值不增加,則 area 將在繪製之前對值進行排序。
如果 Y 是矩陣,則將 X 指定為由遞增值組成的向量,其長度等於 Y 的行數。area 將 Y 的列繪製為
填充區域
。對於每個 X,最終結果是 Y 行的相應值的和。您還可以將 X 指定為大小等於 Y 的矩陣。為了避免 X 為矩陣時出現意外輸出,請將 X 的列指定為重複列。
area(。。。,basevalue) 指定區域填充的基值。預設 basevalue 為 0。將基值指定為數值。
area(。。。,Name,Value) 使用一個或多個名稱-值對組引數修改區域圖。
area(ax,。。。) 將圖形繪製到 ax 座標區中,而不是當前座標區 (gca) 中。
ar = area(。。。) 返回一個或多個 Area 物件。area 函式將為向量輸入引數建立一個 Area 物件。它會為矩陣輸入引數的每一列建立一個物件。
建立 m×n 矩陣的區域圖會建立 n 個
區域序列物件
(即每列一個),而 1×n 向量建立一個區域序列物件。
[1]
1.1 示例1
clc
%https://zhuanlan。zhihu。com/p/312069817
clear
all
close
all
x
=
[
0
:
0。01
:
pi
];
y
(:,
1
)
=
sin
(
x
);
y
(:,
2
)
=
abs
(
cos
(
x
));
subplot
(
1
,
2
,
1
)
area
(
y
)
xlim
([
0
,
314
])
subplot
(
1
,
2
,
2
)
area
(
y
,
-
4
)
xlim
([
0
,
314
])
這裡我們考慮的是 sin(x) 和 |cos(x)| 兩個函式。
area函式的預設基準面是x軸,如上左圖所示。要想指定特殊
基準面
,直接在命寧area(y, basevalue)中,指定basevalue的值即可。這裡指定值為-4,如上右圖所示。
第一個顏色是
sin(x)函式
與x軸圍成的,第二個顏色是在sin(x)函式基本上,疊加|cos(x)|函式圍成的,此時最上面的線相當於sin(x) + |cos(x)|。
又一示例如下。
clc
%https://zhuanlan。zhihu。com/p/312069817
clear
all
close
all
x
=
[
0
:
0。01
:
pi
];
y
(:,
1
)
=
sin
(
x
);
y
(:,
2
)
=
(
cos
(
x
));
area
(
y
)
xlim
([
0
,
314
])
可以看出,第二個顏色是兩個函式之間的填充。
1.2 示例2
area函式x軸是預設的,但是我們也可以指定其他值,可以是數值、日期時間、持續時間或分類值等等。
上圖x值已經了,例如日期。
clc
%https://zhuanlan。zhihu。com/p/312069817
clear
all
close
all
t
=
datetime
(
2021
,
1
,
15
)
+
calweeks
(
0
:
20
);
x
=
[
0
:
pi
/
20
:
pi
];
y
(:,
1
)
=
sin
(
x
);
y
(:,
2
)
=
abs
(
cos
(
x
));
subplot
(
1
,
2
,
1
)
area
(
t
,
y
)
subplot
(
1
,
2
,
2
)
area
(
t
,
y
,
-
4
)
此時,
橫軸座標
就是日期了。關於時間用法可以參考幫助文件。
[2]
1.3 示例3
area函式預設線型是
實線
,可以採用 ‘LineStyle’ 命寧直接進行更改。
clc
%https://zhuanlan。zhihu。com/p/312069817
clear
all
close
all
x
=
[
0
:
0。01
:
pi
];
y
(:,
1
)
=
sin
(
x
);
y
(:,
2
)
=
abs
(
cos
(
x
));
subplot
(
1
,
2
,
1
)
area
(
x
,
y
,
-
0。5
)
xlim
([
0
,
pi
])
subplot
(
1
,
2
,
2
)
area
(
x
,
y
,
-
0。5
,
‘linestyle’
,
‘——’
)
xlim
([
0
,
pi
])
這裡第一個圖是預設,第二個圖更改為虛線。
1.4 示例四
進一步地,可以更改填充顏色,採用控制代碼命寧。
如下所示。
clc
%https://zhuanlan。zhihu。com/p/312069817
clear
all
close
all
x
=
[
0
:
0。01
:
pi
];
y
(:,
1
)
=
sin
(
x
);
y
(:,
2
)
=
abs
(
cos
(
x
));
subplot
(
1
,
2
,
1
)
h
=
area
(
x
,
y
,
-
0。5
,
‘linestyle’
,
‘none’
);
h
(
1
)。
FaceColor
=
[
0。3
0。8
0。8
];
h
(
2
)。
FaceColor
=
[
0。6
0。2
0。6
];
xlim
([
0
,
pi
])
subplot
(
1
,
2
,
2
)
h
=
area
(
x
,
y
,
-
0。5
,
‘linestyle’
,
‘none’
);
h
(
1
)。
FaceColor
=
[
1
1
1
];
h
(
2
)。
FaceColor
=
[
0。6
0。2
0。6
];
xlim
([
0
,
pi
])
左邊我們更改了填充區的顏色。但是科研中,有時候,我們只需要兩條線之間填充,第一條線與
基底無填充
,則使第一填充顏色為白色([1, 1, 1])即可。
2 應用示例
填充圖應用非常廣泛。
這裡給出一篇JFM(流體力學頂刊)的文章截圖
[3]
也是用MATLAB畫的。
持續更新,更多文章請見專欄和目錄
專欄:MATLAB科學繪圖
MATLAB畫圖技巧與例項:目錄
MATLAB畫圖技巧與例項(一):常用函式
參考
^https://ww2。mathworks。cn/help/matlab/ref/area。html
^https://ww2。mathworks。cn/help/matlab/matlab_prog/plot-dates-and-durations。html
^https://arxiv。org/abs/2007。06228