MATLAB SCI繪圖|陰影誤差圖畫法~


MATLAB SCI繪圖|陰影誤差圖畫法~的圖1

效果圖

MATLAB SCI繪圖|陰影誤差圖畫法~的圖2


MATLAB SCI繪圖|陰影誤差圖畫法~的圖3

陰影誤差圖介紹

陰影誤差圖(Shaded Error Plots)是一種專業的數據可視化方式,主要用于展示一組數據點的中心趨勢和其圍繞該中心的可變性。該類圖表廣泛應用于科學研究、工程學、經濟學和其他需要精確數據分析的領域。陰影誤差圖不僅提供了數據的均值(或其他中心測度數)位置信息,還通過陰影區域清晰地展示了數據的標準差或其他可變性度量,提供了數據集整體特性的全面視圖。

數學和統計學基礎
  • 均值(Mean): 陰影誤差圖通常以數據集的算數平均值作為中心趨勢的代表。
  • 標準差(Standard Deviation): 這是一種用于量化數據點偏離均值的度量,標準差越大,數據點的分散越廣泛。
  • 置信區間(Confidence Intervals): 盡管不是所有的陰影誤差圖都采用置信區間,但這是一種常見的方式,用于估計如果多次抽樣的話,中心趨勢可能會在何處。
  • 矩陣運算和線性代數: 在處理多維數據或進行批量計算時,一些基本的矩陣運算和線性代數知識可能會被用到。

在陰影誤差圖中,通常通過填充陰影區域來表示標準差或置信區間,而這些陰影區域一般會用透明度(alpha值)來區分不同層次的標準差。例如,1個標準差的范圍內的陰影可能會較深,而2或3個標準差的范圍內的陰影則可能會相對較淺。

該圖表形式的優點在于其直觀性和信息量。通過單一的圖表,讀者可以快速獲取數據集的多個統計特性,從而更為準確和全面地理解數據。


MATLAB SCI繪圖|陰影誤差圖畫法~的圖4

繪圖源碼

【小編建議: 收藏、分享、點贊= 學會?

clc; clear; close all;%--------------------------------------------------------------------------% @Author: 好玩的Matlab% @公眾號:好玩的Matlab% @Created: 09,10,2023% @Email: 2377389590@qq.com% @Disclaimer: This code is provided as-is without any warranty.%--------------------------------------------------------------------------
% 初始化數據data = randn(50, 80) * 5;x = (1:size(data, 2)) - 40;yP = sin(linspace(-2 * pi, 2 * pi, length(x))) * 20;y = bsxfun(@plus, data, yP) + 60;% 計算標準差和平均值err = std(data);meany = mean(y, 1);% 計算標準差的邊界lowerBound1 = flipud((meany - err));upperBound1 = meany + err;lowerBound2 = flipud((meany - 2 * err));upperBound2 = meany + 2 * err;lowerBound3 = flipud((meany - 3 * err));upperBound3 = meany + 3 * err;% 準備用于填充區域的數據xconf1 = [x flipud(x')'];yconf1 = [meany + err flipud((meany - err)')'];xconf2 = [x flipud(x')'];yconf2 = [meany + 2 * err flipud((meany - 2 * err)')'];xconf3 = [x flipud(x')'];yconf3 = [meany + 3 * err flipud((meany - 3 * err)')'];% 選擇圖類型type = 6;% 創建圖形figure('Position', [476 356 1011 516]);hold on;% 根據選擇的類型進行繪圖switch type    case 1        fHdl = fill(xconf1, yconf1, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        plot(x, meany, 'Color', [0, 1, 0], 'LineStyle', '-', 'LineWidth', 2);            case 2        fHdl(1) = fill(xconf1, yconf1, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        fHdl(2) = fill(xconf2, yconf2, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        fHdl(3) = fill(xconf3, yconf3, [0 1 0], 'EdgeColor', 'none', 'FaceAlpha', .2);        plot(x, meany, 'Color', [0, 1, 0], 'LineStyle', '-', 'LineWidth', 2);    case 3        plot(x,y,'.','color',[0.5,0.5,0.95]);        plot(x,meany,'LineStyle','-','LineWidth',3,'Color',[0.5,0.5,0.95]);        fHdl=fill(xconf1,yconf1,[0 0 0],'EdgeColor','none','FaceAlpha',.2);    case 4        dist = abs(y - meany);        normDist = dist ./ max(dist);        plot(x,meany,'LineStyle','-','LineWidth',2,'Color','k')        scatter(repmat(x,1,row),reshape(y',1,row*col),[],reshape(normDist',1,row*col), 'filled',...            'MarkerFaceAlpha',0.5,'MarkerEdgeColor','none','SizeData',30);        fHdl=fill(xconf1,yconf1,[0 0 0],'EdgeColor','none','FaceAlpha',.2);        c = colormap(jet(length(x)));        colorbar    case 5        plot(x,meany,'LineStyle','-','LineWidth',6,'Color',[1,0,0])        plot(x,meany,'o','MarkerSize',8,'MarkerFaceColor','w','MarkerEdgeColor',[1,0,0],'HandleVisibility', 'off')        fHdl=fill(xconf1,yconf1,[0.5,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        line(x, lowerBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');    case 6        fHdl(1)=fill(xconf1,yconf1,[0.9,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        fHdl(2)=fill(xconf2,yconf2,[0.9,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        fHdl(3)=fill(xconf3,yconf3,[0.9,0.25,0.25],'EdgeColor','none','FaceAlpha',.2);        plot(x,meany,'LineStyle','-','LineWidth',6,'Color',[1,0,0])        plot(x,meany,'o','MarkerSize',8,'MarkerFaceColor','w','MarkerEdgeColor',[1,0,0],'HandleVisibility', 'off')        line(x, lowerBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound1, 'Color', [1 0 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, lowerBound2, 'Color', [0 1 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound2, 'Color', [0 1 0 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, lowerBound3, 'Color', [0 0 1 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');        line(x, upperBound3, 'Color', [0 0 1 0.5], 'LineWidth', 3, 'LineStyle', ':','HandleVisibility', 'off');end% 配置圖形屬性uistack(fHdl, 'bottom');ax = gca;ax.Box = 'off';ax.XLabel.String = 'X';ax.YLabel.String = 'Y';ax.FontName = 'Times New Roman';ax.GridLineStyle = '-.';ax.GridColor = 'k';ax.XGrid = 'on';ax.YGrid = 'on';ax.LineWidth = 1;ax.XMinorTick = 'on';ax.YMinorTick = 'on';ax.TickDir = 'in';ax.FontSize = 18;

type = 1;

MATLAB SCI繪圖|陰影誤差圖畫法~的圖5

type = 2;

MATLAB SCI繪圖|陰影誤差圖畫法~的圖6

type = 3;

MATLAB SCI繪圖|陰影誤差圖畫法~的圖7

type = 4;

MATLAB SCI繪圖|陰影誤差圖畫法~的圖8

type = 5;

MATLAB SCI繪圖|陰影誤差圖畫法~的圖9

type = 6;

MATLAB SCI繪圖|陰影誤差圖畫法~的圖10

- -THE END- -


參考資料:
【1】https://github.com/raacampbell/shadedErrorBar
【2】https://www.mathworks.com/help/releases/R2021b/matlab/ref/fill.html


文章來源:渝西圖像練習生

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1