iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用Matlab绘制花里胡哨的山脊图
  • 575
分享到

怎么使用Matlab绘制花里胡哨的山脊图

2023-07-05 06:07:27 575人浏览 薄情痞子
摘要

这篇“怎么使用Matlab绘制花里胡哨的山脊图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Matlab绘制花里胡哨

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

    绘制效果如下:

    怎么使用Matlab绘制花里胡哨的山脊图

    怎么使用Matlab绘制花里胡哨的山脊图

    怎么使用Matlab绘制花里胡哨的山脊图

    依旧工具函数放在文末。

    教程部分

    0 数据准备

    X1=nORMrnd(2,2,1,50);X2=[normrnd(4,4,1,50),normrnd(5,2,1,50)];X3=[normrnd(6,2,1,50),normrnd(8,4,1,50)];X4=[normrnd(12,1,1,50),normrnd(12,4,1,50)];X5=[normrnd(10,2,1,50),normrnd(10,4,1,50)];X6=[normrnd(7,2,1,50),normrnd(7,4,1,50)];X7=[normrnd(4,2,1,50),normrnd(4,4,1,50)];Data={X1,X2,X3,X4,X5,X6,X7};

    数据为多个一维向量放在元胞数组中,大概像这样:

    1 基础绘制:上色类型

    通过设置ColorMode属性设置上色方式,可设置为:

    • Order

    • X

    • GlobalX

    • Kdensity

    • Qt

    Qt Order:每个山脊不同颜色

    JP=joyPlot(Data,'ColorMode','Order');JP=JP.draw();

    怎么使用Matlab绘制花里胡哨的山脊图

    绘制并添加图例(同时可以通过MedLine设置显示中位线):

    JP=joyPlot(Data,'ColorMode','Order','MedLine','on');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    可以通过设置ColorList属性或者使用setPatchColor函数设置颜色,推荐前者:

    ColorList属性设置颜色:

    newColorList=[0.1059    0.6196    0.4667    0.8510    0.3725    0.0078    0.4588    0.4392    0.7020    0.6529    0.4059    0.3294    0.9020    0.6706    0.0078    0.6510    0.4627    0.1137    0.4000    0.4000    0.4000];JP=joyPlot(Data,'ColorMode','Order','ColorList',newColorList);JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    setPatchColor函数设置颜色,只能设置面颜色设置不了线条颜色:

    JP=joyPlot(Data,'ColorMode','Order');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)% 设置山脊颜色newColorList=[0.1059    0.6196    0.4667    0.8510    0.3725    0.0078    0.4588    0.4392    0.7020    0.6529    0.4059    0.3294    0.9020    0.6706    0.0078    0.6510    0.4627    0.1137    0.4000    0.4000    0.4000];JP=JP.setPatchColor(newColorList)

    怎么使用Matlab绘制花里胡哨的山脊图

    当然可以全部设置为同一颜色:

    JP=joyPlot(Data,'ColorMode','Order','ColorList',[0,0,.6]);JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl(1))

    怎么使用Matlab绘制花里胡哨的山脊图

    X 每个山脊分别把X映射为颜色

    JP=joyPlot(Data,'ColorMode','X','MedLine','on');JP=JP.draw();

    怎么使用Matlab绘制花里胡哨的山脊图

    当然可以添加colorbar:

    colorbar()

    怎么使用Matlab绘制花里胡哨的山脊图

    设置为其他颜色:

    JP=JP.setPatchColor(winter);

    怎么使用Matlab绘制花里胡哨的山脊图

    JP=JP.setPatchColor(colorcube(256));

    怎么使用Matlab绘制花里胡哨的山脊图

    GlobalX 全局性把X坐标映射为颜色

    Data={X1,X2,X3,X4,X5,X6,X7};JP=joyPlot(Data,'ColorMode','GlobalX','MedLine','on');JP=JP.draw();colorbar

    怎么使用Matlab绘制花里胡哨的山脊图

    换成别的颜色:

    JP=JP.setPatchColor(colorcube(256));

    怎么使用Matlab绘制花里胡哨的山脊图

    Kdensity 依靠核密度

    Data={X1,X2,X3,X4,X5,X6,X7};JP=joyPlot(Data,'ColorMode','Kdensity','MedLine','on');JP=JP.draw();colorbar

    怎么使用Matlab绘制花里胡哨的山脊图

    换成别的颜色:

    JP=JP.setPatchColor(turbo);

    怎么使用Matlab绘制花里胡哨的山脊图

    Qt 分位染色

    默认是0.25,0.75分位染色:

    JP=joyPlot(Data,'ColorMode','Qt','MedLine','on');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    修改分位线(通过设置Quantiles属性):

    JP=joyPlot(Data,'ColorMode','Qt','MedLine','on','Quantiles',[.1,.9]);JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    绘制分位线(可将QtLine设置为on):

    JP=joyPlot(Data,'ColorMode','Qt','MedLine','on','Quantiles',[.1,.9],'QtLine','on');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    值得一提的是,所有染色方式都可以绘制QtLine分位线:

    JP=joyPlot(Data,'ColorMode','Order','MedLine','on','Quantiles',[.1,.9],'QtLine','on');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    更多分位线和更丰富配色:

    JP=joyPlot(Data,'ColorMode','Qt','MedLine','on','Quantiles',[.1,.25,.75,.9],'ColorList',turbo(5),'QtLine','on');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl,{'0~0.1','0.1~0.25','0.25~0.75','0.75~0.9','0.9~1'})

    怎么使用Matlab绘制花里胡哨的山脊图

    更改配色:

    JP=JP.setPatchColor(bone(6));

    怎么使用Matlab绘制花里胡哨的山脊图

    2 山脊图间距

    通过设置Sep属性设置间距,例如小间距:

    JP=joyPlot(Data,'ColorMode','Kdensity','Sep',1/30);JP=JP.draw();colorbar

    怎么使用Matlab绘制花里胡哨的山脊图

    间距设置为1/60:

    怎么使用Matlab绘制花里胡哨的山脊图

    设置大间距(1/3):

    怎么使用Matlab绘制花里胡哨的山脊图

    3 绘制线状散点

    只有Order类型配色不是黑色:

    JP=joyPlot(Data,'ColorMode','Order','Scatter','on');JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl

    怎么使用Matlab绘制花里胡哨的山脊图

    Data={X1,X2,X3,X4,X5,X6,X7};JP=joyPlot(Data,'ColorMode','GlobalX','MedLine','on','Scatter','on');JP=JP.draw();colorbar

    怎么使用Matlab绘制花里胡哨的山脊图

    4 属性单独设置

    每个玩意的属性都可以单独设置

    例如:

    • setRidgePatch 设置山脊面

    • setRidgeLine 设置山脊边缘线

    • setMedLine 设置中位线

    • setQtLine 设置分位线

    • setScatter 设置散点

    JP=joyPlot(Data,'ColorMode','Order','Scatter','on','QtLine','on','MedLine','on','Sep',1/5);JP=JP.draw();legendHdl=JP.getLegendHdl();legend(legendHdl)

    怎么使用Matlab绘制花里胡哨的山脊图

    设置第3个山脊颜色和透明度:

    JP.setRidgePatch(3,'FaceColor',[0,0,0],'FaceAlpha',.5)

    怎么使用Matlab绘制花里胡哨的山脊图

    循环改变所有的颜色和透明度:

    for i=1:length(Data)    JP.setRidgePatch(i,'FaceColor',[1,1,1]./length(Data).*i,'FaceAlpha',.5)end

    怎么使用Matlab绘制花里胡哨的山脊图

    其他玩意也都类似!

    for i=1:length(Data)    JP.setRidgePatch(i,'FaceColor',[1,1,1]./length(Data).*i,'FaceAlpha',.5)    JP.setRidgeLine(i,'Color',[0,0,.8],'LineWidth',1)    JP.setScatter(i,'Color',[0,0,0,.4])    JP.setMedLine(i,'Color',[0,0,.8])    JP.setQtLine(i,'Color',[0,0,.8])end

    怎么使用Matlab绘制花里胡哨的山脊图

    5 多组数据绘图

    举个例子:

    X1_1=normrnd(-15,2,1,20);X1_2=[normrnd(4,4,1,10),normrnd(5,2,1,10)];X1_3=[normrnd(6,2,1,10),normrnd(8,4,1,10)];X1_4=[normrnd(12,1,1,10),normrnd(12,4,1,10)];X1_5=[normrnd(-7,2,1,10),normrnd(2,4,1,10)];X1_6=[normrnd(-7,2,1,10),normrnd(-7,4,1,10)];Data1={X1_1,X1_2,X1_3,X1_4,X1_5,X1_6};X2_1=normrnd(-8,2,1,20);X2_2=[normrnd(2,4,1,10),normrnd(2,2,1,10)];X2_3=[normrnd(18,2,1,10),normrnd(18,4,1,10)];X2_4=[normrnd(18,1,1,10),normrnd(18,4,1,10)];X2_5=[normrnd(5,2,1,10),normrnd(5,4,1,10)];X2_6=[normrnd(-20,2,1,10),normrnd(-20,4,1,10)];Data2={X2_1,X2_2,X2_3,X2_4,X2_5,X2_6};JP1=joyPlot(Data1,'ColorMode','Order','ColorList',[12,165,154]./255,'MedLine','on','Scatter','on');JP1=JP1.draw();JP2=joyPlot(Data2,'ColorMode','Order','ColorList',[151,220,71]./255,'MedLine','on','Scatter','on');JP2=JP2.draw();% 设置中位线颜色for i=1:length(Data1)    JP1.setMedLine(i,'Color',[12,165,154]./255)endfor i=1:length(Data2)    JP2.setMedLine(i,'Color',[151,220,71]./255)end% 绘制图例legendHdl1=JP1.getLegendHdl();legendHdl2=JP2.getLegendHdl();legend([legendHdl1(1),legendHdl2(1)],{'AAAAA','BBBBB'})

    怎么使用Matlab绘制花里胡哨的山脊图

    工具函数完整代码

    classdef joyPlot% @author : slandarer% gzh  : slandarer随笔 % Zhaoxu Liu / slandarer (2023). joyplot % (https://www.mathworks.com/matlabcentral/fileexchange/125255-joyplot), % MATLAB Central File Exchange. 检索来源 2023/2/23.    properties        ax,arginList={'ColorMode','ColorList','Sep','Scatter','MedLine','Quantiles','QtLine'}        ColorMode='Order'   % 上色模式'Order'/'X'/'GlobalX'/'Kdensity'/'Qt'        ColorList        defaultColorList1=[0.3725    0.2745    0.5647;    0.1137    0.4118    0.5882;    0.2196    0.6510    0.6471;    0.0588    0.5216    0.3294                           0.4510    0.6863    0.2824;    0.9294    0.6784    0.0314;    0.8824    0.4863    0.0196;    0.8000    0.3137    0.2431                           0.5804    0.2039    0.4314;    0.4353    0.2510    0.4392];        defaultColorList2=[0.0015    0.0005    0.0139;    0.0143    0.0122    0.0705;    0.0415    0.0323    0.1373;    0.0773    0.0535    0.2088;                               0.1179    0.0664    0.2854;    0.1661    0.0678    0.3630;    0.2209    0.0609    0.4276;    0.2758    0.0616    0.4677;                               0.3279    0.0755    0.4889;    0.3784    0.0954    0.5001;    0.4284    0.1160    0.5058;    0.4788    0.1357    0.5080;                               0.5297    0.1541    0.5070;    0.5814    0.1715    0.5028;    0.6338    0.1882    0.4951;    0.6867    0.2051    0.4836;                               0.7395    0.2231    0.4679;    0.7914    0.2438    0.4480;    0.8410    0.2692    0.4245;    0.8861    0.3019    0.3992;                               0.9240    0.3441    0.3761;    0.9524    0.3958    0.3617;    0.9715    0.4540    0.3610;    0.9837    0.5147    0.3747;                               0.9912    0.5758    0.4003;    0.9954    0.6364    0.4350;    0.9972    0.6964    0.4765;    0.9971    0.7559    0.5234;                               0.9956    0.8150    0.5747;    0.9930    0.8739    0.6300;    0.9899    0.9327    0.6886;    0.9871    0.9914    0.7495];        defaultColorList3=[255,153,154;220,220,220;153,153,253]./255;        Sep=1/8;          % 两个山脊间距离        Scatter='off';    % 是否绘制竖线状散点        MedLine='off';        QtLine='off';        Quantiles=[.25,.75];QtX,QtY        ridgeNum,Data,minX,maxX,maxY,XiSet,FSet        ridgePatchHdl,ridgeLineHdl        medLineHdl,scatterHdl;QtLineHdl;QtLegendHdl    end    methods        function obj=joyPlot(Data,varargin)            obj.Data=Data;            obj.ridgeNum=length(obj.Data);            % 获取其他数据            disp(char([64 97 117 116 104 111 114 32 58 32,...                 115 108 97 110 100 97 114 101 114]))            for i=1:2:(length(varargin)-1)                tid=ismember(obj.arginList,varargin{i});                if any(tid)                    obj.(obj.arginList{tid})=varargin{i+1};                end            end            if isempty(intersect(obj.ColorMode,{'Order','X','GlobalX','Kdensity','Qt'}))                error('The ColorMode should be one of the following: Order \ X \ GlobalX \ Kdensity \ Qt')            end            switch obj.ColorMode                case 'Order',obj.ColorList=obj.defaultColorList1;                case 'X',obj.ColorList=obj.defaultColorList2;                case 'GlobalX',obj.ColorList=obj.defaultColorList2;                case 'Kdensity',obj.ColorList=obj.defaultColorList2;                case 'Qt',obj.ColorList=obj.defaultColorList3;            end            for i=1:2:(length(varargin)-1)                tid=ismember(obj.arginList,varargin{i});                if any(tid)                    obj.(obj.arginList{tid})=varargin{i+1};                end            end            obj.minX=min(obj.Data{1});            obj.maxX=max(obj.Data{1});            for i=1:obj.ridgeNum                obj.minX=min(obj.minX,min(obj.Data{i}));                obj.maxX=max(obj.maxX,max(obj.Data{i}));            end        end        function obj=draw(obj)            obj.ax=GCa;hold on;            obj.ax.LineWidth=1;            obj.ax.YTick=(1:obj.ridgeNum).*obj.Sep;            obj.ax.FontName='Cambria';            obj.ax.FontSize=13;            obj.ax.YGrid='on';            % obj.ax.Box='on';            obj.ax.TickDir='out';            tYLabel{obj.ridgeNum}='';            for i=1:obj.ridgeNum                tYLabel{i}=['Class-',num2str(i)];            end            obj.ax.YTickLabel=tYLabel;            % 调整初始界面大小            fig=obj.ax.Parent;            fig.Color=[1,1,1];            if max(fig.Position(3:4))<690                fig.Position(3:4)=1.2.*fig.Position(3:4);                fig.Position(1:2)=fig.Position(1:2)./2;            end            % 绘制patch图像            obj.minX=min(obj.Data{1});            obj.maxX=max(obj.Data{1});            obj.maxY=0;            for i=1:obj.ridgeNum                tX=obj.Data{i};tX=tX(:)';                [F,Xi]=ksdensity(tX);                obj.minX=min(obj.minX,min(Xi));                obj.maxX=max(obj.maxX,max(Xi));                obj.maxY=max(obj.maxY,max(F));            end            for i=obj.ridgeNum:-1:1                tX=obj.Data{i};tX=tX(:)';                [F,Xi]=ksdensity(tX);                OXi=Xi;                Xi=linspace(min(Xi),max(Xi),1000);                F=interp1(OXi,F,Xi);                obj.XiSet{i}=Xi;                obj.FSet{i}=F;                % 绘制竖线散点                tXX=[tX;tX;tX.*nan];                tYY=[tX.*0+obj.Sep.*i-obj.Sep./10;tX.*0+obj.Sep.*i-obj.Sep./2.5;tX.*nan];                if isequal(obj.ColorMode,'Order')                    obj.scatterHdl(i)=plot(tXX(:),tYY(:),'Color',[obj.ColorList(mod(i-1,size(obj.ColorList,1))+1,:),.5],'LineWidth',.8,'Visible','off');                else                    obj.scatterHdl(i)=plot(tXX(:),tYY(:),'Color',[0,0,0,.5],'LineWidth',.8,'Visible','off');                end                if isequal(obj.Scatter,'on'),set(obj.scatterHdl(i),'Visible','on');end                % 计算分位线                for j=1:length(obj.Quantiles)                    obj.QtX(i,j+1)=quantile(tX,obj.Quantiles(j));                    obj.QtY(i,j)=interp1(Xi,F,quantile(tX,obj.Quantiles(j)));                end                obj.QtX(i,1)=min(Xi)-inf;                obj.QtX(i,length(obj.Quantiles)+2)=max(Xi)+inf;                switch obj.ColorMode                    case 'Order'                        obj.ridgePatchHdl(i)=fill([Xi(1),Xi,Xi(end)],[0,F,0]+obj.Sep.*(i).*ones(1,length(F)+2),...                            obj.ColorList(mod(i-1,size(obj.ColorList,1))+1,:),'EdgeColor','none','FaceAlpha',.5);                        obj.ridgeLineHdl(i)=plot([Xi(1),Xi,Xi(end)],[0,F,0]+obj.Sep.*(i).*ones(1,length(F)+2),...                            'Color',obj.ColorList(mod(i-1,size(obj.ColorList,1))+1,:),'LineWidth',.8);                        colormap(obj.ColorList);                        try caxis([1,obj.ridgeNum]),catch,end                        try clim([1,obj.ridgeNum]),catch,end                    case 'X'                        tTi=[Xi(1),Xi,Xi(end),Xi(end:-1:1)]-min(Xi);tTi=tTi./max(tTi);                        tT=linspace(0,1,size(obj.ColorList,1));                        tC=cat(3,interp1(tT,obj.ColorList(:,1),tTi),interp1(tT,obj.ColorList(:,2),tTi),interp1(tT,obj.ColorList(:,3),tTi));                        obj.ridgePatchHdl(i)=fill([Xi(1),Xi,Xi(end),Xi(end:-1:1)],[0,F,0,F.*0]+obj.Sep.*(i).*ones(1,length(F)*2+2),...                            tC,'EdgeColor','none','FaceAlpha',.9,'FaceColor','interp');                        obj.ridgeLineHdl(i)=plot([Xi(1),Xi,Xi(end)],[0,F,0]+obj.Sep.*(i).*ones(1,length(F)+2),...                            'Color',[0,0,0,.9],'LineWidth',.8);                        colormap(obj.ColorList);                        try caxis([-1,1]),catch,end                        try clim([-1,1]),catch,end                    case 'GlobalX'                        tTi=[Xi(1),Xi,Xi(end),Xi(end:-1:1)]-obj.minX;                        tTi=tTi./(obj.maxX-obj.minX);                        tT=linspace(0,1,size(obj.ColorList,1));                        tC=cat(3,interp1(tT,obj.ColorList(:,1),tTi),interp1(tT,obj.ColorList(:,2),tTi),interp1(tT,obj.ColorList(:,3),tTi));                        obj.ridgePatchHdl(i)=fill([Xi(1),Xi,Xi(end),Xi(end:-1:1)],[0,F,0,F.*0]+obj.Sep.*(i).*ones(1,length(F)*2+2),...                            tC,'EdgeColor','none','FaceAlpha',.9,'FaceColor','interp');                        obj.ridgeLineHdl(i)=plot([Xi(1),Xi,Xi(end)],[0,F,0]+obj.Sep.*(i).*ones(1,length(F)+2),...                            'Color',[0,0,0,.9],'LineWidth',.8);                        colormap(obj.ColorList);                        try caxis([obj.minX,obj.maxX]),catch,end                        try clim([obj.minX,obj.maxX]),catch,end                    case 'Kdensity'                        tTi=[0,F,0,F(end:-1:1)];                        tTi=tTi./obj.maxY;                        tT=linspace(0,1,size(obj.ColorList,1));                        tC=cat(3,interp1(tT,obj.ColorList(:,1),tTi),interp1(tT,obj.ColorList(:,2),tTi),interp1(tT,obj.ColorList(:,3),tTi));                        obj.ridgePatchHdl(i)=fill([Xi(1),Xi,Xi(end),Xi(end:-1:1)],[0,F,0,F.*0]+obj.Sep.*(i).*ones(1,length(F)*2+2),...                            tC,'EdgeColor','none','FaceAlpha',.9,'FaceColor','interp');                        obj.ridgeLineHdl(i)=plot([Xi(1),Xi,Xi(end)],[0,F,0]+obj.Sep.*(i).*ones(1,length(F)+2),...                            'Color',[0,0,0,.9],'LineWidth',.8);                        colormap(obj.ColorList);                        try caxis([0,obj.maxY]),catch,end                        try clim([0,obj.maxY]),catch,end                    case 'Qt'                        tTi=[Xi(1),Xi,Xi(end),Xi(end:-1:1)];                        tR=tTi.*0;tG=tTi.*0;tB=tTi.*0;                        for j=1:size(obj.QtX,2)-1                            tR(tTi>=obj.QtX(i,j)&tTi<obj.QtX(i,j+1))=obj.ColorList(mod(j-1,size(obj.ColorList,1))+1,1);                            tG(tTi>=obj.QtX(i,j)&tTi<obj.QtX(i,j+1))=obj.ColorList(mod(j-1,size(obj.ColorList,1))+1,2);                            tB(tTi>=obj.QtX(i,j)&tTi<obj.QtX(i,j+1))=obj.ColorList(mod(j-1,size(obj.ColorList,1))+1,3);                        end                        tC=cat(3,tR,tG,tB);                        obj.ridgePatchHdl(i)=fill([Xi(1),Xi,Xi(end),Xi(end:-1:1)],[0,F,0,F.*0]+obj.Sep.*(i).*ones(1,length(F)*2+2),...                            tC,'EdgeColor','none','FaceAlpha',.9,'FaceColor','interp');                        obj.ridgeLineHdl(i)=plot([Xi(1),Xi,Xi(end)],[0,F,0]+obj.Sep.*(i).*ones(1,length(F)+2),...                            'Color',[0,0,0,.9],'LineWidth',.8);                        colormap(obj.ColorList);                        try caxis([-1,1]),catch,end                        try clim([-1,1]),catch,end                end                % 绘制中位线                tMedX=median(tX);                tMedY=interp1(Xi,F,tMedX);                obj.medLineHdl(i)=plot([tMedX,tMedX],[0,tMedY]++obj.Sep.*[i,i],'LineStyle','--','LineWidth',1,'Color',[0,0,0],'Visible','off');                 if isequal(obj.MedLine,'on'),set(obj.medLineHdl(i),'Visible','on');end                % 绘制分位线                tQtY=[obj.QtY(i,:);obj.QtY(i,:).*0;obj.QtY(i,:).*nan]+obj.Sep.*i;                tQtX=[obj.QtX(i,2:end-1);obj.QtX(i,2:end-1);obj.QtX(i,2:end-1).*nan];                obj.QtLineHdl(i)=plot(tQtX(:),tQtY(:),'LineWidth',1,'Color',[0,0,0,.8],'Visible','off');                if isequal(obj.QtLine,'on'),set(obj.QtLineHdl(i),'Visible','on');end                % % 绘制25,75分位线                % tQt25X=quantile(tX,0.25);                % tQt75X=quantile(tX,0.75);                % tQt25Y=interp1(Xi,F,tQt25X);                % tQt75Y=interp1(Xi,F,tQt75X);                % obj.qt25LineHdl(i)=plot([tQt25X,tQt25X],[0,tQt25Y]+obj.Sep.*[i,i],'LineWidth',1,'Color',[1,1,1,.8],'Visible','off');                % obj.qt75LineHdl(i)=plot([tQt75X,tQt75X],[0,tQt75Y]+obj.Sep.*[i,i],'LineWidth',1,'Color',[1,1,1,.8],'Visible','off');                % if isequal(obj.QT25Line,'on'),set(obj.qt25LineHdl(i),'Visible','on');end                % if isequal(obj.QT75Line,'on'),set(obj.qt75LineHdl(i),'Visible','on');end            end            axis tight            obj.ax.YLim(1)=obj.Sep/2;            for i=1:size(obj.QtX,2)-1                obj.QtLegendHdl(i)=fill(mean(obj.ax.XLim).*[1,1,1,1],mean(obj.ax.YLim).*[1,1,1,1],...                    obj.ColorList(mod(i-1,size(obj.ColorList,1))+1,:),'EdgeColor','none','FaceAlpha',.9);            end        end        % 获取绘制图例对象        function legendHdl=getLegendHdl(obj)            if isequal(obj.ColorMode,'Qt')                legendHdl=obj.QtLegendHdl;            else                legendHdl=obj.ridgePatchHdl;            end        end        % 颜色重设置        function obj=setPatchColor(obj,ColorList)            obj.ColorList=ColorList;            colormap(obj.ColorList);            for i=obj.ridgeNum:-1:1                Xi=obj.XiSet{i};                F=obj.FSet{i};                switch obj.ColorMode                    case 'Order'                        set(obj.ridgePatchHdl(i),'FaceColor',obj.ColorList(mod(i-1,size(obj.ColorList,1))+1,:));                    case 'X'                        tTi=[Xi(1),Xi,Xi(end),Xi(end:-1:1)]-min(Xi);tTi=tTi./max(tTi);                        tT=linspace(0,1,size(obj.ColorList,1));                        tC=cat(3,interp1(tT,obj.ColorList(:,1),tTi),interp1(tT,obj.ColorList(:,2),tTi),interp1(tT,obj.ColorList(:,3),tTi));                        set(obj.ridgePatchHdl(i),'CData',tC);                    case 'GlobalX'                        tTi=[Xi(1),Xi,Xi(end),Xi(end:-1:1)]-obj.minX;                        tTi=tTi./(obj.maxX-obj.minX);                        tT=linspace(0,1,size(obj.ColorList,1));                        tC=cat(3,interp1(tT,obj.ColorList(:,1),tTi),interp1(tT,obj.ColorList(:,2),tTi),interp1(tT,obj.ColorList(:,3),tTi));                        set(obj.ridgePatchHdl(i),'CData',tC);                    case 'Kdensity'                        tTi=[0,F,0,F(end:-1:1)];                        tTi=tTi./obj.maxY;                        tT=linspace(0,1,size(obj.ColorList,1));                        tC=cat(3,interp1(tT,obj.ColorList(:,1),tTi),interp1(tT,obj.ColorList(:,2),tTi),interp1(tT,obj.ColorList(:,3),tTi));                        set(obj.ridgePatchHdl(i),'CData',tC);                    case 'Qt'                        tTi=[Xi(1),Xi,Xi(end),Xi(end:-1:1)];                        tR=tTi.*0;tG=tTi.*0;tB=tTi.*0;                        for j=1:size(obj.QtX,2)-1                            tR(tTi>=obj.QtX(i,j)&tTi<obj.QtX(i,j+1))=obj.ColorList(mod(j-1,size(obj.ColorList,1))+1,1);                            tG(tTi>=obj.QtX(i,j)&tTi<obj.QtX(i,j+1))=obj.ColorList(mod(j-1,size(obj.ColorList,1))+1,2);                            tB(tTi>=obj.QtX(i,j)&tTi<obj.QtX(i,j+1))=obj.ColorList(mod(j-1,size(obj.ColorList,1))+1,3);                        end                        tC=cat(3,tR,tG,tB);                        set(obj.ridgePatchHdl(i),'CData',tC);                end            end            for i=1:size(obj.QtX,2)-1                set(obj.QtLegendHdl(i),'FaceColor',obj.ColorList(mod(i-1,size(obj.ColorList,1))+1,:));            end        end        % 设置Patch及Line对象其他属性        function setRidgePatch(obj,n,varargin)            set(obj.ridgePatchHdl(n),varargin{:})        end        function setRidgeLine(obj,n,varargin)            set(obj.ridgeLineHdl(n),varargin{:})        end        % 设置各个分位线属性        function setMedLine(obj,n,varargin)            set(obj.medLineHdl(n),varargin{:})        end        function setQtLine(obj,n,varargin)            set(obj.QtLineHdl(n),varargin{:})        end        % 设置scatter属性        function setScatter(obj,n,varargin)            set(obj.scatterHdl(n),varargin{:})        end    end% @author : slandarer% gzh  : slandarer随笔 % Zhaoxu Liu / slandarer (2023). joyplot % (Https://www.mathworks.com/matlabcentral/fileexchange/125255-joyplot), % MATLAB Central File Exchange. 检索来源 2023/2/23.end

    以上就是关于“怎么使用Matlab绘制花里胡哨的山脊图”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: 怎么使用Matlab绘制花里胡哨的山脊图

    本文链接: https://www.lsjlt.com/news/350010.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Matlab绘制花里胡哨的山脊图
      目录教程部分0 数据准备1 基础绘制:上色类型2 山脊图间距3 绘制线状散点4 属性单独设置5 多组数据绘图工具函数完整代码本期推送教大家如何绘制各种样式的山脊图,这里做了一个工具函...
      99+
      2023-02-24
      Matlab绘制山脊图 Matlab山脊图
    • 怎么使用Matlab绘制花里胡哨的山脊图
      这篇“怎么使用Matlab绘制花里胡哨的山脊图”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Matlab绘制花里胡哨...
      99+
      2023-07-05
    • 基于Matlab实现山脊图的绘制
      目录纯色山脊图模板渐变色山脊图模板写了一个用于绘制山脊图的模板,仅需要往需要填写数据的区域填入数据点击运行即可,以下提供两款模板,第一款为纯色模板而第二款为渐变色模板: 纯色山脊图模...
      99+
      2024-04-02
    • 如何使用python数据可视化Seaborn绘制山脊图
      这篇文章主要介绍如何使用python数据可视化Seaborn绘制山脊图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 引言山脊图一般由垂直堆叠的折线图组成,这些折线图中的折线区域间彼此重叠,此外它们还共享相同的x...
      99+
      2023-06-22
    • Android怎么用ShaderMask实现花里胡哨的文字特效
      这篇文章主要介绍了Android怎么用ShaderMask实现花里胡哨的文字特效的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么用ShaderMask实现花里胡哨的文字特效文章都会有所收获,下面...
      99+
      2023-07-04
    • 怎么使用python绘制火山图
      这篇文章主要讲解了“怎么使用python绘制火山图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用python绘制火山图”吧!导入模块import numpy as...
      99+
      2023-07-02
    • 如何利用Matlab绘制出好看的火山图
      这里画了一个示例: 数据来源 绘制效果: 代码及说明: 使用代码时只需要改一开始导入的数据,和代码提示中X坐标区域范围和Y坐标区域范围,完整代码如下所示: % 读取数据 data=...
      99+
      2024-04-02
    • 使用python怎么绘制一个火山图
      今天就跟大家聊聊有关使用python怎么绘制一个火山图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整...
      99+
      2023-06-14
    • Python和Matlab怎么实现樱花的绘制
      本篇内容介绍了“Python和Matlab怎么实现樱花的绘制”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.锦短情长为什么选择这个标题,借...
      99+
      2023-06-29
    • 如何使用Matlab绘制超绚丽的烟花效果
      这篇文章将为大家详细讲解有关如何使用Matlab绘制超绚丽的烟花效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.使用效果2.随机点生成我们要构造一个黑色背景,对其添加高斯噪声,然后依据阈值删掉部分噪...
      99+
      2023-06-29
    • MATLAB怎么用数据绘制曲线图
      要使用MATLAB绘制曲线图,可以按照以下步骤进行:1. 准备数据:首先,准备好要绘制的数据。可以是向量、矩阵或表格数据。2. 创建...
      99+
      2023-10-08
      matlab
    • matlab怎么绘制双变量的图像
      在MATLAB中,可以使用`scatter`函数绘制双变量的散点图,使用`plot`函数绘制双变量的折线图或曲线图。下面是使用这两个...
      99+
      2023-09-14
      matlab
    • matlab怎么绘制矩阵的散点图
      在MATLAB中,你可以使用`scatter`函数来绘制矩阵的散点图。这里有一个简单的示例来说明如何使用`scatter`函数绘制矩...
      99+
      2023-09-13
      matlab
    • Matlab怎么实现动态表白图的绘制
      这篇文章主要介绍了Matlab怎么实现动态表白图的绘制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matlab怎么实现动态表白图的绘制文章都会有所收获,下面我们一起来看看吧。提前祝女朋友节日快乐1 展现这里没...
      99+
      2023-06-30
    • MATLAB三维绘图命令plot3怎么使用
      MATLAB中的plot3命令用于绘制三维空间中的曲线。它的使用方法如下:plot3(X,Y,Z)其中,X、Y和Z是三维曲线上点的坐...
      99+
      2023-09-14
      MATLAB
    • 使用Canvas怎么绘制一个波浪花环
      使用Canvas怎么绘制一个波浪花环?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。<!DOCTYPE html><html lang=...
      99+
      2023-06-09
    • 使用canvas怎么绘制一个烟花效果
      这期内容当中小编将会给大家带来有关使用canvas怎么绘制一个烟花效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。目录结构目录结构大致如下我们将烟花分为两个阶段,一个是未炸开持续上升时期,另一个是炸开后...
      99+
      2023-06-09
    • 使用JavaScript怎么绘制一个烟花效果
      这期内容当中小编将会给大家带来有关使用JavaScript怎么绘制一个烟花效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。HTML<!DOCTYPE html><html&n...
      99+
      2023-06-14
    • 怎么使用Matlab绘制有趣的罗盘时钟
      这篇文章主要介绍“怎么使用Matlab绘制有趣的罗盘时钟”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用Matlab绘制有趣的罗盘时钟”文章能帮助大家解决问题。绘制效果完整代码function...
      99+
      2023-07-05
    • 怎么在Matlab中利用fft绘制信号频谱图
      这篇文章将为大家详细讲解有关怎么在Matlab中利用fft绘制信号频谱图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。fs=500;%采样率f1=5;%信号频率f2=10;%信号频率T=1;...
      99+
      2023-06-14
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作