Matlab绘制雨云图的方法详解
目录
- 介绍
- 横向雨云图
- 纵向雨云图
介绍 写了俩代码模板,用来绘制横向云雨图与纵向云雨图,云雨图其实就是用把小提琴图拆开来的模板,想获取小提琴图绘制函数的可以看这里:基于Matlab绘制小提琴图的示例代码
后面的俩模板用的时候只需要换换数据,颜色及每一类名称即可,雨云图绘制效果如下:
文章图片
横向雨云图
function rainCloudsTMPL1% @author: slandarer% 在这里放入你的数据=======================================================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'}; % 各个数据类的名称,可空着% 颜色列表colorList=[0.92940.75690.50590.91760.55690.46270.70200.47840.54510.48630.43140.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]); endif isempty(dataName)for i=1:classNumdataName{i}=['class',num2str(i)]; endend% 坐标区域修饰hold onax=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)end% 绘制图例lgd=legend(patchCell,dataName); lgd.Location='best'; end
文章图片
纵向雨云图
function rainCloudsTMPL2% @author: slandarer% 在这里放入你的数据=======================================================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'}; % 各个数据类的名称,可空着% 颜色列表colorList=[0.92940.75690.50590.91760.55690.46270.70200.47840.54510.48630.43140.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]); endif isempty(dataName)for i=1:classNumdataName{i}=['class',num2str(i)]; endend% 坐标区域修饰hold onax=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)end% 绘制图例lgd=legend(patchCell,dataName); lgd.Location='best'; end
文章图片
【Matlab绘制雨云图的方法详解】到此这篇关于Matlab绘制雨云图的方法详解的文章就介绍到这了,更多相关Matlab雨云图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 基于Matlab绘制小提琴图的示例代码
- Android(将文本绘制为动态大小的位图)
- 雨林木风安装win7系统图文详细教程
- 光盘安装Win7雨林木风系统的详细设置办法
- 雨林木风win7装机增强版32位最新ghost系统下载
- 雨林木风GHOST专业优化版WIN7 SP1 64位系统推荐
- 雨林木风ghost win7增强安装版系统下载
- SAR图像的干涉相位|SAR图像的干涉相位 matlab_聊聊三维重建-条纹法之相位法-1
- 雨林木风win7旗舰版32位最新装机版系统免费下载
- 国庆节发啥口令会下微信表情雨?_微信