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
:【Matlab实现带竖线散点的核密度图的绘制】
文章图片
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 onN=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); endareaHdl(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; elseax.YLim(1)=-posSep/6; endax.XLim=ax.XLim; totalSep=diff(ax.YLim); for n=1:Ndy=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核密度图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- spring|spring boot security自定义配置授权服务器实现Oauth2授权(支持密码和授权码两种模式)
- unity|【Unity】在物体上方显示UI并实现倒计时功能
- Unity学习笔记|Unity学习笔记--实现UI元素跟随3D物体
- 碰瓷丨卷毛yygq狂带峰峰节奏(偷大哥很正常,但我不会这么做!)
- 设计模式|观察者(observer)模式(二) —— 实现线程安全的监听器
- 算法与数据结构|C语言单链表实现增删改查
- 数据结构|【数据结构】【王道】【线性表】无头结点单链表的实现及基本操作(可直接运行)
- #|【路径优化】基于改进的RRT算法的全局路径规划(Matlab代码实现)
- 云GIS|AI+GIS实现网络新闻舆情地理分布可视化
- 微信小程序中如何实现动态改变SVG颜色和尺寸