Matlab實(shí)現(xiàn)好看的配對(duì)箱線圖的繪制
寫了一個(gè)配對(duì)箱線圖繪制模板:


數(shù)據(jù)準(zhǔn)備
這里隨機(jī)生成了一些正態(tài)分布隨機(jī)數(shù)作為數(shù)據(jù),使用時(shí)可以將Y換成自己的數(shù)據(jù):
% 隨機(jī)構(gòu)造一組數(shù)據(jù) PntSet1=sort(mvnrnd(0,2,25)); PntSet2=sort(mvnrnd(.5,2.5,25)); PntSet3=sort(mvnrnd(0,2,25)); PntSet4=sort(mvnrnd(.5,2.5,25)); % Y=[PntSet1,PntSet2]; Y=[PntSet1,PntSet2,PntSet3,PntSet4];
配色
這里準(zhǔn)備了七組數(shù)據(jù),只需要修改colorList=Cn即可:
% 配色列表 C1=[59 125 183;244 146 121;242 166 31;180 68 108;220 211 30]./255; C2=[102,173,194;36,59,66;232,69,69;194,148,102;54,43,33]./255; C3=[38,140,209;219,51,46;41,161,153;181,138,0;107,112,196]./255; C4=[110,153,89;230,201,41;79,79,54;245,245,245;199,204,158]./255; C5=[235,75,55;77,186,216;2,162,136;58,84,141;245,155,122]./255; C6=[23,23,23;121,17,36;44,9,75;31,80,91;61,36,42]./255; C7=[126,15,4;122,117,119;255,163,25;135,146,73;30,93,134]./255; colorList=C7;
C1:

C2:

C3:

C4:

C5:

C6:

C7:

繪圖及修飾
這里的修飾分為坐標(biāo)區(qū)域修飾以及圖形對(duì)象修飾兩部分,已在代碼中標(biāo)注好:
% 繪圖
boxplot(Y,'Symbol','o','OutlierSize',3,'Colors',[0,0,0]);
% 坐標(biāo)區(qū)域?qū)傩栽O(shè)置
ax=gca;hold on;
ax.LineWidth=1.1;
ax.FontSize=11;
ax.FontName='Arial';
ax.XTickLabel={'AA','BB','CC','DD','EE','FF'};
ax.Title.String='Title of Paired BoxPlot';
ax.Title.FontSize=13;
ax.YLabel.String='expression of XXX';
% 修改線條粗細(xì)
lineObj=findobj(gca,'Type','Line');
for i=1:length(lineObj)
lineObj(i).LineWidth=1;
lineObj(i).MarkerFaceColor=[1,1,1].*.3;
lineObj(i).MarkerEdgeColor=[1,1,1].*.3;
end
% 為箱線圖的框上色
boxObj=findobj(gca,'Tag','Box');
for i=1:length(boxObj)
patch(boxObj(i).XData,boxObj(i).YData,colorList(length(boxObj)+1-i,:),'FaceAlpha',0.5,...
'LineWidth',1.1);
end
% 繪制配對(duì)線
X=ones(size(Y)).*(1:size(Y,2));
plot(X',Y','Color',[0,0,0,.3],'Marker','o','MarkerFaceColor',[1,1,1].*.3,...
'MarkerEdgeColor',[1,1,1].*.3,'MarkerSize',3,'LineWidth',.6)
完整代碼
% pairboxplot
% 隨機(jī)構(gòu)造一組數(shù)據(jù)
PntSet1=sort(mvnrnd(0,2,25));
PntSet2=sort(mvnrnd(.5,2.5,25));
PntSet3=sort(mvnrnd(0,2,25));
PntSet4=sort(mvnrnd(.5,2.5,25));
% Y=[PntSet1,PntSet2];
Y=[PntSet1,PntSet2,PntSet3,PntSet4];
% 配色列表
C1=[59 125 183;244 146 121;242 166 31;180 68 108;220 211 30]./255;
C2=[102,173,194;36,59,66;232,69,69;194,148,102;54,43,33]./255;
C3=[38,140,209;219,51,46;41,161,153;181,138,0;107,112,196]./255;
C4=[110,153,89;230,201,41;79,79,54;245,245,245;199,204,158]./255;
C5=[235,75,55;77,186,216;2,162,136;58,84,141;245,155,122]./255;
C6=[23,23,23;121,17,36;44,9,75;31,80,91;61,36,42]./255;
C7=[126,15,4;122,117,119;255,163,25;135,146,73;30,93,134]./255;
colorList=C7;
% 繪圖
boxplot(Y,'Symbol','o','OutlierSize',3,'Colors',[0,0,0]);
% 坐標(biāo)區(qū)域?qū)傩栽O(shè)置
ax=gca;hold on;
ax.LineWidth=1.1;
ax.FontSize=11;
ax.FontName='Arial';
ax.XTickLabel={'AA','BB','CC','DD','EE','FF'};
ax.Title.String='Title of Paired BoxPlot';
ax.Title.FontSize=13;
ax.YLabel.String='expression of XXX';
% 修改線條粗細(xì)
lineObj=findobj(gca,'Type','Line');
for i=1:length(lineObj)
lineObj(i).LineWidth=1;
lineObj(i).MarkerFaceColor=[1,1,1].*.3;
lineObj(i).MarkerEdgeColor=[1,1,1].*.3;
end
% 為箱線圖的框上色
boxObj=findobj(gca,'Tag','Box');
for i=1:length(boxObj)
patch(boxObj(i).XData,boxObj(i).YData,colorList(length(boxObj)+1-i,:),'FaceAlpha',0.5,...
'LineWidth',1.1);
end
% 繪制配對(duì)線
X=ones(size(Y)).*(1:size(Y,2));
plot(X',Y','Color',[0,0,0,.3],'Marker','o','MarkerFaceColor',[1,1,1].*.3,...
'MarkerEdgeColor',[1,1,1].*.3,'MarkerSize',3,'LineWidth',.6)
以上就是Matlab實(shí)現(xiàn)好看的配對(duì)箱線圖的繪制的詳細(xì)內(nèi)容,更多關(guān)于Matlab配對(duì)箱線圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
c++實(shí)現(xiàn)跳躍表(Skip List)的方法示例
跳表(skiplist)是一個(gè)非常優(yōu)秀的數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)簡(jiǎn)單,插入、刪除、查找的復(fù)雜度均為O(logN),下面這篇文章主要介紹了c++實(shí)現(xiàn)跳躍表(Skip List)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
C++設(shè)計(jì)模式中的工廠模式詳細(xì)介紹
工廠模式,是一種實(shí)例化對(duì)象的方式,只要輸入需要實(shí)例化對(duì)象的名字,就可以通過工廠對(duì)象的相應(yīng)工廠函數(shù)來制造你需要的對(duì)象2022-09-09
C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
C語言將24小時(shí)制轉(zhuǎn)換為12小時(shí)制的方法
這篇文章主要介紹了C語言將24小時(shí)制轉(zhuǎn)換為12小時(shí)制的方法,涉及C語言針對(duì)時(shí)間的相關(guān)操作技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-07-07
C語言文件操作實(shí)現(xiàn)數(shù)據(jù)持久化(幫你快速了解文件操作函數(shù))
持久數(shù)據(jù)其實(shí)就是將數(shù)據(jù)保存到數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于C語言文件操作實(shí)現(xiàn)數(shù)據(jù)持久化(幫你快速了解文件操作函數(shù))的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11

