溫馨提示×

溫馨提示×

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

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

Matlab怎么繪制雨云圖

發(fā)布時間:2022-05-16 11:31:40 來源:億速云 閱讀:383 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Matlab怎么繪制雨云圖”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Matlab怎么繪制雨云圖”吧!

介紹

寫了倆代碼模板,用來繪制橫向云雨圖與縱向云雨圖,云雨圖其實(shí)就是用把小提琴圖拆開來的模板,想獲取小提琴圖繪制函數(shù)的可以看這里:基于Matlab繪制小提琴圖的示例代碼

后面的倆模板用的時候只需要換換數(shù)據(jù),顏色及每一類名稱即可,雨云圖繪制效果如下:

Matlab怎么繪制雨云圖

橫向雨云圖

function rainCloudsTMPL1
% @author: slandarer


% 在這里放入你的數(shù)據(jù)=======================================================
X1=[normrnd(8,4,1,120),normrnd(5,2,1,25)];
X2=[normrnd(2.5,3,1,75),normrnd(6,4,1,25),normrnd(15,1,1,100)];
X3=[normrnd(4,3,1,40),normrnd(3,4,1,25)];
X4=[normrnd(4,3,1,40),normrnd(2,4,1,75)];

dataCell={X1,X2,X3,X4};  % 把數(shù)據(jù)放到元胞數(shù)組,要是數(shù)據(jù)太多可寫循環(huán)放入  
dataName={'A','B','C','D'};  % 各個數(shù)據(jù)類的名稱,可空著

% 顏色列表
colorList=[0.9294    0.7569    0.5059
           0.9176    0.5569    0.4627
           0.7020    0.4784    0.5451
           0.4863    0.4314    0.5490];      
% =========================================================================

classNum=length(dataCell);
if size(colorList,1)==0
    colorList=repmat([130,170,172]./255,[classNum,1]);
else
    colorList=repmat(colorList,[ceil(classNum/size(colorList,1)),1]);
end
if isempty(dataName)
    for i=1:classNum
        dataName{i}=['class',num2str(i)];
    end
end

% 坐標(biāo)區(qū)域修飾
hold on
ax=gca;
ax.YLim=[1/2,classNum+2/3];
ax.YTick=1:classNum;
ax.LineWidth=1.2;
ax.YTickLabels=dataName(end:-1:1);
ax.FontSize=14;


rate=3.5;


% 繪制雨云圖
for i=1:classNum
    tX=dataCell{i};tX=tX(:);
    [F,Xi]=ksdensity(tX);

    % 繪制山脊圖
    patchCell(i)=fill([Xi(1),Xi,Xi(end)],0.2+[0,F,0].*rate+(classNum+1-i).*ones(1,length(F)+2),...
        colorList(i,:),'EdgeColor',[0,0,0],'FaceAlpha',0.8,'LineWidth',1.2);

    % 其他數(shù)據(jù)獲取
    qt25=quantile(tX,0.25); % 下四分位數(shù)
    qt75=quantile(tX,0.75); % 上四分位數(shù)
    med=median(tX);         % 中位數(shù)

    outliBool=isoutlier(tX,'quartiles');  % 離群值點(diǎn)
    nX=tX(~outliBool);                    % 95%置信內(nèi)的數(shù)
    
    % 繪制箱線圖
    plot([min(nX),max(nX)],[(classNum+1-i),(classNum+1-i)],'k','lineWidth',1.2);
    fill([qt25,qt25,qt75,qt75],(classNum+1-i)+[-1 1 1 -1].*0.12,colorList(i,:),'EdgeColor',[0 0 0]);
    plot([med,med],[(classNum+1-i)-0.12,(classNum+1-i)+0.12],'Color',[0,0,0],'LineWidth',2.5)

    % 繪制散點(diǎn) 
    tY=(rand(length(tX),1)-0.5).*0.24+ones(length(tX),1).*(classNum+1-i);
    scatter(tX,tY,15,'CData',colorList(i,:),'MarkerEdgeAlpha',0.15,...
        'MarkerFaceColor',colorList(i,:),'MarkerFaceAlpha',0.1)
end
% 繪制圖例
lgd=legend(patchCell,dataName);
lgd.Location='best';
end

Matlab怎么繪制雨云圖

縱向雨云圖

function rainCloudsTMPL2
% @author: slandarer


% 在這里放入你的數(shù)據(jù)=======================================================
X1=[normrnd(8,4,1,120),normrnd(5,2,1,25)];
X2=[normrnd(2.5,3,1,75),normrnd(6,4,1,25),normrnd(15,1,1,100)];
X3=[normrnd(4,3,1,40),normrnd(3,4,1,25)];
X4=[normrnd(4,3,1,40),normrnd(2,4,1,75)];

dataCell={X1,X2,X3,X4};  % 把數(shù)據(jù)放到元胞數(shù)組,要是數(shù)據(jù)太多可寫循環(huán)放入  
dataName={'A','B','C','D'};  % 各個數(shù)據(jù)類的名稱,可空著

% 顏色列表
colorList=[0.9294    0.7569    0.5059
           0.9176    0.5569    0.4627
           0.7020    0.4784    0.5451
           0.4863    0.4314    0.5490];      
% =========================================================================

classNum=length(dataCell);
if size(colorList,1)==0
    colorList=repmat([130,170,172]./255,[classNum,1]);
else
    colorList=repmat(colorList,[ceil(classNum/size(colorList,1)),1]);
end
if isempty(dataName)
    for i=1:classNum
        dataName{i}=['class',num2str(i)];
    end
end

% 坐標(biāo)區(qū)域修飾
hold on
ax=gca;
ax.XLim=[1/2,classNum+2/3];
ax.XTick=1:classNum;
ax.LineWidth=1.2;
ax.XTickLabels=dataName(end:-1:1);
ax.FontSize=14;


rate=3.5;


% 繪制雨云圖
for i=1:classNum
    tX=dataCell{i};tX=tX(:);
    [F,Xi]=ksdensity(tX);

    % 繪制山脊圖
    patchCell(i)=fill(0.2+[0,F,0].*rate+(classNum+1-i).*ones(1,length(F)+2),[Xi(1),Xi,Xi(end)],...
        colorList(i,:),'EdgeColor',[0,0,0],'FaceAlpha',0.8,'LineWidth',1.2);

    % 其他數(shù)據(jù)獲取
    qt25=quantile(tX,0.25); % 下四分位數(shù)
    qt75=quantile(tX,0.75); % 上四分位數(shù) 
    med=median(tX);         % 中位數(shù)

    outliBool=isoutlier(tX,'quartiles');  % 離群值點(diǎn)
    nX=tX(~outliBool);                    % 95%置信內(nèi)的數(shù)
    
    % 繪制箱線圖
    plot([(classNum+1-i),(classNum+1-i)],[min(nX),max(nX)],'k','lineWidth',1.2);
    fill((classNum+1-i)+[-1 1 1 -1].*0.12,[qt25,qt25,qt75,qt75],colorList(i,:),'EdgeColor',[0 0 0]);
    plot([(classNum+1-i)-0.12,(classNum+1-i)+0.12],[med,med],'Color',[0,0,0],'LineWidth',2.5)

    % 繪制散點(diǎn) 
    tY=(rand(length(tX),1)-0.5).*0.24+ones(length(tX),1).*(classNum+1-i);
    scatter(tY,tX,15,'CData',colorList(i,:),'MarkerEdgeAlpha',0.15,...
        'MarkerFaceColor',colorList(i,:),'MarkerFaceAlpha',0.1)
end
% 繪制圖例
lgd=legend(patchCell,dataName);
lgd.Location='best';
end

Matlab怎么繪制雨云圖

到此,相信大家對“Matlab怎么繪制雨云圖”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI