【MATLAB基础绘图第20棒】云雨图

2024-01-24 03:12
文章标签 基础 matlab 绘图 20 云雨

本文主要是介绍【MATLAB基础绘图第20棒】云雨图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MATLAB绘制云雨图

  • 云雨图(Raincloud plots)
  • MATLAB绘制云雨图
    • 横向云雨图
    • 竖向云雨图
  • 参考

云雨图(Raincloud plots)

云雨图(Raincloud plots)其实是可以看成核密度估计曲线图、箱形图和抖动散点图的组合图,清晰、完整、美观地展示了所有数据信息。
本质上是一个混合图,可同时将原始数据、数据分布和关键汇总统计表现出来,由对分的小提琴图(Violin plot)、箱线图(boxplot)和作为某种散点的原始数据组成。

MATLAB绘制云雨图

横向云雨图

成图如下:
在这里插入图片描述
MATLAB代码如下:

clc
close all
clear
%% 函数说明-绘制云雨图pathFigure= '.\Figures\' ;
figureUnits = 'centimeters';
figureWidth = 20; 
figureHeight = 10;% 导入数据
X1=[normrnd(8,4,1,120),normrnd(5,2,1,25)];
X2=[normrnd(2.5,3,1,75),normrnd(6,4,1,25),normrnd(15,1,1,100)];
X3=[normrnd(4,3,1,40),normrnd(3,4,1,25)];
X4=[normrnd(4,3,1,40),normrnd(2,4,1,75)];dataCell={X1,X2,X3,X4};           % 把数据放到元胞数组,要是数据太多可写循环放入  
dataName={'A','B','C','D'};        % 各个数据类的名称,可空着%% 绘制横向云雨图rainCloudsH(dataCell, dataName)str= strcat(pathFigure, "图1 "+"横向云雨图", '.tiff');
print(gcf, '-dtiff', '-r600', str);
%% 调用函数function rainCloudsH(dataCell, dataName)% 颜色列表
colorList=[0.9294    0.7569    0.50590.9176    0.5569    0.46270.7020    0.4784    0.54510.4863    0.4314    0.5490];      
% =========================================================================classNum=length(dataCell);
if size(colorList,1)==0colorList=repmat([130,170,172]./255,[classNum,1]);
elsecolorList=repmat(colorList,[ceil(classNum/size(colorList,1)),1]);
end
if isempty(dataName)for i=1:classNumdataName{i}=['class',num2str(i)];end
endfigure(1)
% 坐标区域修饰
hold on; box on;
ax=gca;
ax.YLim=[1/2,classNum+2/3];
ax.YTick=1:classNum;
ax.LineWidth=1.2;
ax.YTickLabels=dataName(end:-1:1);
ax.FontSize=14;rate=3.5;% 绘制雨云图
for i=1:classNumtX=dataCell{i};tX=tX(:);[F,Xi]=ksdensity(tX);% 绘制山脊图patchCell(i)=fill([Xi(1),Xi,Xi(end)],0.2+[0,F,0].*rate+(classNum+1-i).*ones(1,length(F)+2),...colorList(i,:),'EdgeColor',[0,0,0],'FaceAlpha',0.8,'LineWidth',1.2);% 其他数据获取qt25=quantile(tX,0.25); % 下四分位数qt75=quantile(tX,0.75); % 上四分位数med=median(tX);         % 中位数outliBool=isoutlier(tX,'quartiles');  % 离群值点nX=tX(~outliBool);                    % 95%置信内的数% 绘制箱线图plot([min(nX),max(nX)],[(classNum+1-i),(classNum+1-i)],'k','lineWidth',1.2);fill([qt25,qt25,qt75,qt75],(classNum+1-i)+[-1 1 1 -1].*0.12,colorList(i,:),'EdgeColor',[0 0 0]);plot([med,med],[(classNum+1-i)-0.12,(classNum+1-i)+0.12],'Color',[0,0,0],'LineWidth',2.5)% 绘制散点 tY=(rand(length(tX),1)-0.5).*0.24+ones(length(tX),1).*(classNum+1-i);scatter(tX,tY,15,'CData',colorList(i,:),'MarkerEdgeAlpha',0.15,...'MarkerFaceColor',colorList(i,:),'MarkerFaceAlpha',0.1)
endset(gca,'FontName','Times New Roman','FontSize',14, 'Layer','top','LineWidth',1);% 绘制图例
hl = legend(patchCell,dataName);
set(hl,'Box','off','location','northOutside','NumColumns',4,'FontSize',16,'FontName','Times New Roman');    end

竖向云雨图

成图如下:
在这里插入图片描述

MATLAB代码如下:

clc
close all
clear
%% 函数说明-绘制云雨图pathFigure= '.\Figures\' ;
figureUnits = 'centimeters';
figureWidth = 20; 
figureHeight = 10;% 导入数据
X1=[normrnd(8,4,1,120),normrnd(5,2,1,25)];
X2=[normrnd(2.5,3,1,75),normrnd(6,4,1,25),normrnd(15,1,1,100)];
X3=[normrnd(4,3,1,40),normrnd(3,4,1,25)];
X4=[normrnd(4,3,1,40),normrnd(2,4,1,75)];dataCell={X1,X2,X3,X4};           % 把数据放到元胞数组,要是数据太多可写循环放入  
dataName={'A','B','C','D'};        % 各个数据类的名称,可空着%% 绘制竖向云雨图
rainCloudsV(dataCell, dataName)str= strcat(pathFigure, "图2 "+"竖向云雨图", '.tiff');
print(gcf, '-dtiff', '-r600', str);function rainCloudsV(dataCell, dataName)% 颜色列表
colorList=[0.9294    0.7569    0.50590.9176    0.5569    0.46270.7020    0.4784    0.54510.4863    0.4314    0.5490];      
% =========================================================================classNum=length(dataCell);
if size(colorList,1)==0colorList=repmat([130,170,172]./255,[classNum,1]);
elsecolorList=repmat(colorList,[ceil(classNum/size(colorList,1)),1]);
end
if isempty(dataName)for i=1:classNumdataName{i}=['class',num2str(i)];end
endfigure(2)
% 坐标区域修饰
hold on; box on;
ax=gca;
ax.XLim=[1/2,classNum+2/3];
ax.XTick=1:classNum;
ax.LineWidth=1.2;
ax.XTickLabels=dataName(end:-1:1);
ax.FontSize=14;rate=3.5;% 绘制雨云图
for i=1:classNumtX=dataCell{i};tX=tX(:);[F,Xi]=ksdensity(tX);% 绘制山脊图patchCell(i)=fill(0.2+[0,F,0].*rate+(classNum+1-i).*ones(1,length(F)+2),[Xi(1),Xi,Xi(end)],...colorList(i,:),'EdgeColor',[0,0,0],'FaceAlpha',0.8,'LineWidth',1.2);% 其他数据获取qt25=quantile(tX,0.25); % 下四分位数qt75=quantile(tX,0.75); % 上四分位数 med=median(tX);         % 中位数outliBool=isoutlier(tX,'quartiles');  % 离群值点nX=tX(~outliBool);                    % 95%置信内的数% 绘制箱线图plot([(classNum+1-i),(classNum+1-i)],[min(nX),max(nX)],'k','lineWidth',1.2);fill((classNum+1-i)+[-1 1 1 -1].*0.12,[qt25,qt25,qt75,qt75],colorList(i,:),'EdgeColor',[0 0 0]);plot([(classNum+1-i)-0.12,(classNum+1-i)+0.12],[med,med],'Color',[0,0,0],'LineWidth',2.5)% 绘制散点 tY=(rand(length(tX),1)-0.5).*0.24+ones(length(tX),1).*(classNum+1-i);scatter(tY,tX,15,'CData',colorList(i,:),'MarkerEdgeAlpha',0.15,...'MarkerFaceColor',colorList(i,:),'MarkerFaceAlpha',0.1)
endset(gca,'FontName','Times New Roman','FontSize',14, 'Layer','top','LineWidth',1);% 绘制图例
hl = legend(patchCell,dataName);
set(hl,'Box','off','location','northOutside','NumColumns',4,'FontSize',16,'FontName','Times New Roman');    
end

参考

1、微信公众号-MATLAB | 如何使用MATLAB绘制雨云图

这篇关于【MATLAB基础绘图第20棒】云雨图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou