【天天报资讯】Matlab实现带竖线散点的核密度图的绘制
目录
带竖线散点的核密度图绘制模板part1 数据part2 格式part3 配色part4 模板完整代码带竖线散点的核密度图绘制模板
今天带来一个带竖线散点的核密度图绘制模板,作为模板,想要画出属于自己的图,需要修改的就只有数据,格式,配色三样,以下给出模板使用详细讲解:
(资料图片)
part1 数据
这里的数据需要通过Data(n).X=...
的格式设置,例如,三组数据:
% 导入数据,更多的数据也请使用 % 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(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);
这部分代码里用的是随机生成的正态分布,可以将其更改为自己的数据。
part2 格式
有俩基础格式:
% 一些基础设置 scatterSep="off"; % 是否分开绘制竖线散点 totalRatio="off"; % 是否各组按比例绘制
totalRatio
属性能调节各组图像是否各组按比例绘制,如果将其设置为on
:
scatterSep
属性能调节是否分开绘制竖线散点,如果将其设置为on
:
part3 配色
这里准备了八组数据,只需要修改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 % 导入数据,更多的数据也请使用 % 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); % 一些基础设置 scatterSep="off"; % 是否分开绘制竖线散点 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}=""; % 计算各类数据量 K=arrayfun(@(x) length(x.X),Data); % 循环绘图 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"; % 调整轴范围 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 % 坐标区域修饰 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"; % 绘制基准线及框线 fplot(@(t)t.*0,"Color",ax.XColor,"LineWidth",ax.LineWidth);
到此这篇关于Matlab实现带竖线散点的核密度图的绘制的文章就介绍到这了,更多相关Matlab核密度图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 2现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 3如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 4AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 5转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 6充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 7好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 8名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 9亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 10京东绿色建材线上平台上线 新增用户70%来自下沉市场