MATLAB | 如何绘制这种带竖线散点的核密度图

2023-11-09 02:30

本文主要是介绍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);

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

% 导入数据,更多的数据也请使用
% 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);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;
end
ax.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 | 如何绘制这种带竖线散点的核密度图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373622

相关文章

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

libsvm在matlab中的使用方法

原文地址:libsvm在matlab中的使用方法 作者: lwenqu_8lbsk 前段时间,gyp326曾在论坛里问libsvm如何在matlab中使用,我还奇怪,认为libsvm是C的程序,应该不能。没想到今天又有人问道,难道matlab真的能运行libsvm。我到官方网站看了下,原来,真的提供了matlab的使用接口。 接口下载在: http://www.csie.ntu.edu.

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数

Matlab/Simulink中PMSM模型的反电动势系数和转矩系数_matlab pmsm-CSDN博客

MATLAB层次聚类分析法

转自:http://blog.163.com/lxg_1123@126/blog/static/74841406201022774051963/ 层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。层次聚类的过程可以分这么几步: (1) 确定对象(实际上就是数据集中的每个数据点)之间的相似性,实际上就是定义一个表征

MATLAB的fix(),floor()和ceil()函数的区别与联系

fix(x),floor(x)和ceil(x)函数都是对x取整,只不过取整方向不同而已。 这里的方向是以x轴作为横坐标来看的,向右就是朝着正轴方向,向左就是朝着负轴方向。 fix(x):向0取整(也可以理解为向中间取整) floor(x):向左取整 ceil(x):向右取整 举例: 4个数:a=3.3、b=3.7、c=-3.3、d=-3.7 fix(a)=3 fl