欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Matlab如何繪制小提琴圖

 更新時(shí)間:2022年02月26日 14:22:30   作者:slandarer  
小提琴圖 (Violin Plot)是用來(lái)展示多組數(shù)據(jù)的分布狀態(tài)以及概率密度。這種圖表結(jié)合了箱形圖和密度圖的特征,主要用來(lái)顯示數(shù)據(jù)的分布形狀。本文將介紹如何利用Matlab繪制小提琴圖,需要的可以參考一下

寫(xiě)了個(gè)matlab繪制小提琴圖的函數(shù):

1.圖中小提琴狀區(qū)域?yàn)楹嗣芏惹€

2.白色方塊為25%,75%分位數(shù)

3.中間橫線為中位數(shù)

4.白色點(diǎn)為離群值點(diǎn)

5.豎著的黑線是去掉離群值點(diǎn)后點(diǎn)的上下限

1使用示例

基礎(chǔ)使用,Y為矩陣

X=1:5;
Y=randn(100,5);

Hdl1=violinChart(gca,X,Y,[0 0.447 0.741],0.6);

  • X:橫坐標(biāo)
  • Y:數(shù)據(jù)集
  • FaceColor :顏色,示例用的是[0 0.447 0.741]
  • width : 小提琴圖寬度,這里取的是0.6,就是以兩個(gè)小提琴圖間距的0.6倍為概率密度的上限1

基礎(chǔ)使用,Y為向量,X為標(biāo)簽

X=[1.*ones(1,50),2.*ones(1,30),3.*ones(1,20),4.*ones(1,50),5.*ones(1,50)];
Y=randn(1,200)+sin(X);

Hdl=violinChart(gca,X,Y,[0 0.447 0.741]);

基礎(chǔ)使用多個(gè)圖像繪制,并添加圖例

X1=[1:2:7,13];
Y1=randn(100,5)+sin(X1);
X2=2:2:10;
Y2=randn(100,5)+cos(X2);

figure
Hdl1=violinChart(gca,X1,Y1,[0     0.447 0.741]);
Hdl2=violinChart(gca,X2,Y2,[0.850 0.325 0.098]);
legend([Hdl1.F_legend,Hdl2.F_legend],{'randn+sin(x)','randn+cos(x)'});

2完整代碼

function Hdl=violinChart(ax,X,Y,FaceColor,width)
% @author slandarer
% Hdl: 返回的圖形對(duì)象句柄結(jié)構(gòu)體
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% Hdl.F_density(i)   | patch   | 核密度分布
% Hdl.F_outlier(i)   | scatter | 離群值點(diǎn)
% Hdl.F_range95(i)   | line    | 去除離群值點(diǎn)后最大值及最小值
% Hdl.F_quantile(i)  | patch   | 四分位數(shù)框
% Hdl.F_medianLine(i)| line    | 中位數(shù)
%
% Hdl.F_legend       | patch   | 用于生成legend圖例的圖形對(duì)象
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% 請(qǐng)使用如下方式生成圖例:
% Hdl1=violinChart(ax,X,Y,... ...)
% Hdl2=violinChart(ax,X,Y,... ...)
% ... ...
% legend([Hdl1,Hdl2,... ...],{Name1,Name2,...})
% ===========================================================
% 以下為使用實(shí)例代碼:
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
% X1=[1:2:7,13];
% Y1=randn(100,5)+sin(X1);
% X2=2:2:10;
% Y2=randn(100,5)+cos(X2);
% 
% Hdl1=violinChart(gca,X1,Y1,[0     0.447 0.741],0.5);
% Hdl2=violinChart(gca,X2,Y2,[0.850 0.325 0.098],0.5);
% legend([Hdl1.F_legend,Hdl2.F_legend],{'randn+sin(x)','randn+cos(x)'});

if nargin<5
    width=0.4;
end

if ~isempty(ax)
else
    ax=gca;
end
hold(ax,'on');

oriX=X;
X=unique(X);
sep=min(diff(X));
if isempty(sep)
    sep=1;
end
for i=1:length(X)
    if length(oriX)==numel(Y)
        tY=Y(oriX==X(i));
    else
        tY=Y(:,i);
    end
    [f,yi]=ksdensity(tY);
    Hdl.F_density(i)=fill([f,-f(end:-1:1)].*sep.*width+X(i),[yi,yi(end:-1:1)],FaceColor);
    
    outliBool=isoutlier(tY,'quartiles');
    outli=tY(outliBool);
    Hdl.F_outlier(i)=scatter(repmat(X(i),[length(outli),1]),outli,20,'filled',...
                    'CData',[1 1 1],'MarkerEdgeColor','none');
    nY=tY(~outliBool);
    Hdl.F_range95(i)=plot([X(i),X(i)],[min(nY),max(nY)],'k','lineWidth',1);
    
    qt25=quantile(tY,0.25);
    qt75=quantile(tY,0.75);
    
    Hdl.F_quantile(i)=fill(X(i)+0.6.*sep.*width.*[-1 1 1 -1].*max(f),...
                    [qt25,qt25,qt75,qt75],[1 1 1],...
                    'EdgeColor',[0 0 0]);
                
    med=median(tY);
    Hdl.F_medianLine(i)=plot(X(i)+0.6.*sep.*width.*[-1 1].*max(f),[med,med],'LineWidth',3,...
                    'Color',[0 0 0]);
end

Hdl.F_legend=Hdl.F_density(1);
end

以上就是詳解Matlab如何繪制小提琴圖的詳細(xì)內(nèi)容,更多關(guān)于Matlab小提琴圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 圖文詳解C語(yǔ)言位運(yùn)算基礎(chǔ)知識(shí)

    圖文詳解C語(yǔ)言位運(yùn)算基礎(chǔ)知識(shí)

    這篇文章主要以圖文結(jié)合的方式為大家詳細(xì)介紹了C語(yǔ)言位運(yùn)算基礎(chǔ)知識(shí),感興趣的小伙伴們可以參考一下
    2016-07-07
  • 詳解C++中new運(yùn)算符和delete運(yùn)算符的使用

    詳解C++中new運(yùn)算符和delete運(yùn)算符的使用

    這篇文章主要介紹了C++中new運(yùn)算符和delete運(yùn)算符的使用,文章來(lái)自于微軟開(kāi)發(fā)者文檔,因而根據(jù)Visual C++的一些特性來(lái)進(jìn)行講解,需要的朋友可以參考下
    2016-01-01
  • 使用udp發(fā)送>=128K的消息會(huì)報(bào)ENOBUFS的錯(cuò)誤的解決方法

    使用udp發(fā)送>=128K的消息會(huì)報(bào)ENOBUFS的錯(cuò)誤的解決方法

    在項(xiàng)目中選擇了unix域的數(shù)據(jù)報(bào)套接口。在使用過(guò)程中碰到了如下,問(wèn)題:發(fā)送<128K的消息時(shí),客戶、進(jìn)程可以正常收發(fā)消息;發(fā)送>=128K的消息時(shí),發(fā)送端(sendto)返回ENOBUFS的錯(cuò)誤。下面小編來(lái)詳細(xì)說(shuō)下
    2019-05-05
  • C語(yǔ)言不用鏈表完成學(xué)生管理系統(tǒng)(完整代碼)

    C語(yǔ)言不用鏈表完成學(xué)生管理系統(tǒng)(完整代碼)

    這篇文章主要介紹了C語(yǔ)言不用鏈表完成學(xué)生管理系統(tǒng)(完整代碼),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Qt+Live555搭建RTSP服務(wù)器的方法步驟

    Qt+Live555搭建RTSP服務(wù)器的方法步驟

    本文主要介紹了Qt+Live555搭建RTSP服務(wù)器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • c語(yǔ)言中scanf的基本用法

    c語(yǔ)言中scanf的基本用法

    這篇文章主要給大家介紹了關(guān)于c語(yǔ)言中scanf的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • C++ opencv實(shí)現(xiàn)車道線識(shí)別

    C++ opencv實(shí)現(xiàn)車道線識(shí)別

    這篇文章主要為大家詳細(xì)介紹了C++ opencv實(shí)現(xiàn)車道線識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • C語(yǔ)言實(shí)現(xiàn)最簡(jiǎn)單的剪刀石頭布小游戲示例

    C語(yǔ)言實(shí)現(xiàn)最簡(jiǎn)單的剪刀石頭布小游戲示例

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最簡(jiǎn)單的剪刀石頭布小游戲,涉及C語(yǔ)言數(shù)組、隨機(jī)數(shù)與數(shù)值運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • C++?Boost?Spirit精通教程

    C++?Boost?Spirit精通教程

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開(kāi)發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • 淺析c與c++中struct的區(qū)別

    淺析c與c++中struct的區(qū)別

    c與c++中struct的區(qū)別你是否了解,下面小編就詳細(xì)的為大家介紹一下
    2013-07-07

最新評(píng)論