溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Matlab怎么繪制小提琴圖

發布時間:2022-02-28 09:19:11 來源:億速云 閱讀:286 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“Matlab怎么繪制小提琴圖”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Matlab怎么繪制小提琴圖”這篇文章吧。

    1使用示例

    基礎使用,Y為矩陣

    X=1:5;
    Y=randn(100,5);
    
    Hdl1=violinChart(gca,X,Y,[0 0.447 0.741],0.6);

    Matlab怎么繪制小提琴圖

    • X:橫坐標

    • Y:數據集

    • FaceColor :顏色,示例用的是[0 0.447 0.741]

    • width : 小提琴圖寬度,這里取的是0.6,就是以兩個小提琴圖間距的0.6倍為概率密度的上限1

    基礎使用,Y為向量,X為標簽

    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]);

    Matlab怎么繪制小提琴圖

    基礎使用多個圖像繪制,并添加圖例

    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)'});

    Matlab怎么繪制小提琴圖

    2完整代碼

    function Hdl=violinChart(ax,X,Y,FaceColor,width)
    % @author slandarer
    % Hdl: 返回的圖形對象句柄結構體
    % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    % Hdl.F_density(i)   | patch   | 核密度分布
    % Hdl.F_outlier(i)   | scatter | 離群值點
    % Hdl.F_range95(i)   | line    | 去除離群值點后最大值及最小值
    % Hdl.F_quantile(i)  | patch   | 四分位數框
    % Hdl.F_medianLine(i)| line    | 中位數
    %
    % Hdl.F_legend       | patch   | 用于生成legend圖例的圖形對象
    % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    % 請使用如下方式生成圖例:
    % Hdl1=violinChart(ax,X,Y,... ...)
    % Hdl2=violinChart(ax,X,Y,... ...)
    % ... ...
    % legend([Hdl1,Hdl2,... ...],{Name1,Name2,...})
    % ===========================================================
    % 以下為使用實例代碼:
    % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    % 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怎么繪制小提琴圖”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女