Matlab實(shí)現(xiàn)帶豎線散點(diǎn)的核密度圖的繪制
帶豎線散點(diǎn)的核密度圖繪制模板


今天帶來一個帶豎線散點(diǎn)的核密度圖繪制模板,作為模板,想要畫出屬于自己的圖,需要修改的就只有數(shù)據(jù),格式,配色三樣,以下給出模板使用詳細(xì)講解:
part1 數(shù)據(jù)
這里的數(shù)據(jù)需要通過Data(n).X=...的格式設(shè)置,例如,三組數(shù)據(jù):
% 導(dǎo)入數(shù)據(jù),更多的數(shù)據(jù)也請使用 % Data(n).X=......的格式 Data(1).X=mvnrnd(40,60,300); Data(2).X=mvnrnd(60,60,600); Data(3).X=mvnrnd(80,60,900);

五組數(shù)據(jù)(數(shù)據(jù)組數(shù)超過五組則后期需要設(shè)置更長的配色):
% 導(dǎo)入數(shù)據(jù),更多的數(shù)據(jù)也請使用 % Data(n).X=......的格式 Data(1).X=mvnrnd(40,60,300); Data(2).X=mvnrnd(60,60,600); Data(3).X=mvnrnd(80,60,900); Data(4).X=mvnrnd(100,60,1200); Data(5).X=mvnrnd(120,60,1200);

這部分代碼里用的是隨機(jī)生成的正態(tài)分布,可以將其更改為自己的數(shù)據(jù)。
part2 格式
有倆基礎(chǔ)格式:
% 一些基礎(chǔ)設(shè)置 scatterSep='off'; % 是否分開繪制豎線散點(diǎn) totalRatio='off'; % 是否各組按比例繪制
totalRatio屬性能調(diào)節(jié)各組圖像是否各組按比例繪制,如果將其設(shè)置為on:

scatterSep屬性能調(diào)節(jié)是否分開繪制豎線散點(diǎn),如果將其設(shè)置為on:

part3 配色
這里準(zhǔn)備了八組數(shù)據(jù),只需要修改colorList=Cn即可:
% 配色列表 C1=[211 43 43;61 96 137;249 206 61;76 103 86;80 80 80]./255; C2=[102,173,194;36,59,66;232,69,69;194,148,102;54,43,33]./255; C3=[244,241,222;223,122,94;60 64 91;130 178 154;240 201 134]./255; C4=[126,15,4;122,117,119;255,163,25;135,146,73;30,93,134]./255; C5=[198,199,201;38,74,96;209,80,51;241,174,44;12,13,15]./255; C6=[235,75,55;77,186,216;2,162,136;58,84,141;245,155,122]./255; C7=[23,23,23;121,17,36;44,9,75;31,80,91;61,36,42]./255; C8=[47,62,66;203,129,70;0 64 115;152,58,58;20 72 83]./255; colorList=C2;
C1:

C2:

C3:

C4:

C5:

C6:

C7:

C8:

part4 模板完整代碼
% line area
% @author : slandarer
% @公眾號 : slandarer隨筆
clc;clear
% 導(dǎo)入數(shù)據(jù),更多的數(shù)據(jù)也請使用
% Data(n).X=......的格式
Data(1).X=mvnrnd(40,60,300);
Data(2).X=mvnrnd(60,60,600);
Data(3).X=mvnrnd(80,60,900);
Data(4).X=mvnrnd(100,60,1200);
Data(5).X=mvnrnd(120,60,1200);
% 一些基礎(chǔ)設(shè)置
scatterSep='off'; % 是否分開繪制豎線散點(diǎn)
totalRatio='on'; % 是否各組按比例繪制
% 配色列表
C1=[211 43 43;61 96 137;249 206 61;76 103 86;80 80 80]./255;
C2=[102,173,194;36,59,66;232,69,69;194,148,102;54,43,33]./255;
C3=[244,241,222;223,122,94;60 64 91;130 178 154;240 201 134]./255;
C4=[126,15,4;122,117,119;255,163,25;135,146,73;30,93,134]./255;
C5=[198,199,201;38,74,96;209,80,51;241,174,44;12,13,15]./255;
C6=[235,75,55;77,186,216;2,162,136;58,84,141;245,155,122]./255;
C7=[23,23,23;121,17,36;44,9,75;31,80,91;61,36,42]./255;
C8=[47,62,66;203,129,70;0 64 115;152,58,58;20 72 83]./255;
colorList=C2;
% =========================================================================
% 圖像繪制
ax=gca;hold on
N=length(Data);
areaHdl(N)=nan;
lgdStrs{N}='';
% 計算各類數(shù)據(jù)量
K=arrayfun(@(x) length(x.X),Data);
% 循環(huán)繪圖
for n=1:N
[f,xi]=ksdensity(Data(n).X);
if strcmp(totalRatio,'on')
f=f.*K(n)./sum(K);
end
areaHdl(n)=area(xi,f,'FaceColor',colorList(n,:),...
'EdgeColor',colorList(n,:),'FaceAlpha',.5,'LineWidth',1.5);
lgdStrs{n}=['Group ',num2str(n)];
end
% 繪制圖例
lgd=legend(areaHdl,lgdStrs{:});
lgd.AutoUpdate='off';
lgd.Location='best';
% 調(diào)整軸范圍
posSep=ax.YLim(2)-0;
if strcmp(scatterSep,'on')
ax.YLim(1)=-posSep/6*N;
else
ax.YLim(1)=-posSep/6;
end
ax.XLim=ax.XLim;
totalSep=diff(ax.YLim);
for n=1:N
dy=strcmp(scatterSep,'on');
LY=ones(1,K(n)).*[(-posSep/6).*(.1+dy.*(n-1));(-posSep/6.)*(.9+dy.*(n-1));nan];
LX=[Data(n).X(:)';Data(n).X(:)';ones(1,K(n)).*nan];
line(LX(:),LY(:),'Color',[colorList(n,:),.4],'lineWidth',1)
end
% 坐標(biāo)區(qū)域修飾
ax.Box='on';
ax.BoxStyle='full';
ax.LineWidth=1;
ax.FontSize=11;
ax.FontName='Arial';
ax.TickDir='out';
ax.TickLength=[.005,.1];
ax.YTick(ax.YTick<-eps)=[];
ax.Title.String='area plot with | scatter';
ax.Title.FontSize=14;
ax.XLabel.String='XXXXX';
ax.YLabel.String='YYYYY';
% 繪制基準(zhǔn)線及框線
fplot(@(t)t.*0,'Color',ax.XColor,'LineWidth',ax.LineWidth);
到此這篇關(guān)于Matlab實(shí)現(xiàn)帶豎線散點(diǎn)的核密度圖的繪制的文章就介紹到這了,更多相關(guān)Matlab核密度圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
異步http listener 完全并發(fā)處理懲罰http懇求的小例子
異步http listener 完全并發(fā)處理懲罰http懇求的小例子,需要的朋友可以參考一下2013-05-05
深入解析C++編程中對設(shè)計模式中的策略模式的運(yùn)用
這篇文章主要介紹了C++編程中對設(shè)計模式中的策略模式的運(yùn)用,需要的朋友可以參考下2016-03-03
C++實(shí)現(xiàn)控制臺隨機(jī)迷宮的示例代碼
本文主要介紹了C++實(shí)現(xiàn)控制臺隨機(jī)迷宮的示例代碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
Ubuntu系統(tǒng)下如何在VScode配置OpenCV(C++)環(huán)境(.json文件)
這篇文章主要介紹了如何在VSCode中配置和運(yùn)行C++程序,包括創(chuàng)建test.cpp文件、配置launch.json、tasks.json和c_cpp_properties.json文件,以及重啟VSCode以解決可能的報錯問題,需要的朋友可以參考下2025-02-02
全局靜態(tài)存儲區(qū)、堆區(qū)和棧區(qū)深入剖析
在C++中,內(nèi)存可分為系統(tǒng)數(shù)據(jù)區(qū),自由存儲區(qū),文本區(qū),const數(shù)據(jù)區(qū),全局靜態(tài)區(qū),堆區(qū)和棧區(qū)2012-11-11
Qt中集成并使用SQLite數(shù)據(jù)庫的超完整指南
這篇文章主要介紹了Qt中集成并使用SQLite數(shù)據(jù)庫的相關(guān)資料,包括環(huán)境配置、連接數(shù)據(jù)庫、執(zhí)行SQL操作、事務(wù)處理、使用模型-視圖編程、錯誤處理、高級技巧與注意事項(xiàng)以及常見問題解答,需要的朋友可以參考下2025-04-04

