Matlab怎么实现带竖线散点的核密度图绘制

发布时间:2022-08-24 11:08:19 作者:iii
来源:亿速云 阅读:243

这篇“Matlab怎么实现带竖线散点的核密度图绘制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Matlab怎么实现带竖线散点的核密度图绘制”文章吧。

带竖线散点的核密度图绘制模板

Matlab怎么实现带竖线散点的核密度图绘制

Matlab怎么实现带竖线散点的核密度图绘制

今天带来一个带竖线散点的核密度图绘制模板,作为模板,想要画出属于自己的图,需要修改的就只有数据,格式,配色三样,以下给出模板使用详细讲解:

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);

Matlab怎么实现带竖线散点的核密度图绘制

五组数据(数据组数超过五组则后期需要设置更长的配色):

% 导入数据,更多的数据也请使用
% 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);

Matlab怎么实现带竖线散点的核密度图绘制

这部分代码里用的是随机生成的正态分布,可以将其更改为自己的数据。

part2 格式

有俩基础格式:

% 一些基础设置
scatterSep='off'; % 是否分开绘制竖线散点
totalRatio='off'; % 是否各组按比例绘制

totalRatio属性能调节各组图像是否各组按比例绘制,如果将其设置为on

Matlab怎么实现带竖线散点的核密度图绘制

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:

Matlab怎么实现带竖线散点的核密度图绘制

C2:

Matlab怎么实现带竖线散点的核密度图绘制

C3:

Matlab怎么实现带竖线散点的核密度图绘制

C4:

Matlab怎么实现带竖线散点的核密度图绘制

C5:

Matlab怎么实现带竖线散点的核密度图绘制

C6:

Matlab怎么实现带竖线散点的核密度图绘制

C7:

Matlab怎么实现带竖线散点的核密度图绘制

C8:

Matlab怎么实现带竖线散点的核密度图绘制

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怎么实现带竖线散点的核密度图绘制”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

推荐阅读:
  1. python如何绘制直方图和密度图
  2. cpu带核显和不带核显有什么不同

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

matlab

上一篇:es6如何获取顶层对象

下一篇:Java深拷贝,浅拷贝和Cloneable接口怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》