最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Matlab實(shí)現(xiàn)極坐標(biāo)堆疊柱狀圖的繪制

 更新時(shí)間:2022年08月01日 15:34:25   作者:slandarer  
極坐標(biāo)堆疊圖也是風(fēng)玫瑰圖的常用形式,MATLAB的bar繪制的條形圖可以繪制成堆疊形式,但是并沒有一個(gè)自帶函數(shù)可以繪制極坐標(biāo)堆疊圖。本文將為大家提供Matlab繪制極坐標(biāo)堆疊柱狀圖的示例代碼,需要的可以參考一下

極坐標(biāo)堆疊圖也是風(fēng)玫瑰圖的常用形式,MATLAB的bar繪制的條形圖可以繪制成堆疊形式,但是并沒有一個(gè)自帶函數(shù)可以繪制極坐標(biāo)堆疊圖,而且極坐標(biāo)下fill函數(shù)也不能用,于是就考慮將數(shù)據(jù)進(jìn)行累加,并多次調(diào)用polarhistogram函數(shù)進(jìn)行繪圖,我將這個(gè)過程變?yōu)榱艘粋€(gè)方便調(diào)用的類。

以下先說明這個(gè)類該咋用,之后再給出類的完整代碼:

part1: 函數(shù)介紹

基本使用

h的每一行代表要繪制一層柱狀圖的數(shù)據(jù),這里要繪制三層的堆疊柱狀圖:

h1=randi([8,18],[1,35])+rand([1,35]);
h2=randi([2,8],[1,35])+rand([1,35]);
h3=randi([0,3],[1,35])+rand([1,35]);
h=[h1;h2;h3];

wr=windrose(h);% 構(gòu)造堆疊圖類
wr=wr.draw();  % 繪圖

其中wr=windrose(h)是構(gòu)造類的過程,第一個(gè)輸入可以是高度矩陣,也可以是當(dāng)前的極坐標(biāo)區(qū)域,繪制的角度范圍可以省略。

角度范圍

構(gòu)造函數(shù)的角度范圍可以省略,默認(rèn)范圍為[0,2π],以下兩種寫法是等同的:

wr=windrose(h)
wr=wr.draw()
wr=windrose(h,[0,2*pi])
wr=wr.draw()

調(diào)節(jié)到 [0,π]:

wr=windrose(h,[0,pi])
wr=wr.draw()

**不均勻角度:**比數(shù)據(jù)長(zhǎng)度多1的角度序列,角度值要求[0,2π]范圍:

wr=windrose(h,[0:5:30,31:1:59]./59.*2.*pi);
wr=wr.draw()

常用函數(shù):改變樣式

基本上的線條顏色,線條透明度,面透明度,線條粗細(xì)等patch對(duì)象具有的一系列屬性,均可以依靠此setStyle函數(shù)設(shè)置:

線條顏色: EdgeColor

線條透明度: EdgeAlpha

面透明度: FaceAlpha

線條粗細(xì):LineWidth

% 隨機(jī)數(shù)據(jù)生成并拼成矩陣
h1=randi([8,18],[1,35])+rand([1,35]);
h2=randi([2,8],[1,35])+rand([1,35]);
h3=randi([0,3],[1,35])+rand([1,35]);
h=[h1;h2;h3];

wr=windrose(h);% 構(gòu)造堆疊圖類
wr=wr.draw();  % 繪圖

% 圖像屬性設(shè)置
wr.setStyle('LineWidth',1.2,'FaceAlpha',.8,'EdgeColor',[.2,.2,.2])

常用函數(shù):設(shè)置下界

就是添加一個(gè)圓形把中心區(qū)域密集的線條遮蓋一下,例如想要設(shè)置下界限為4,可以再之前代碼最后加入:

wr.setLConf(4)

常用函數(shù):修改顏色

修改一個(gè)顏色:(例)修改第二層的顏色:

wr.setColor([.1,.8,.1],2)

修改多個(gè)顏色:(例)修改第一、三層的顏色:

wr.setColor([0,.2,0;0 0 .2],[1,3])

添加圖例

請(qǐng)使用返回對(duì)象的Children屬性添加圖例:

% 添加圖例
lgd=legend(wr.Children,'CLASS 1','CLASS 2','CLASS 3');
lgd.Location='best';

part2: 完整類函數(shù)代碼

classdef windrose
% @author : slandarer
% 公眾號(hào)  : slandarer隨筆
%
% 使用實(shí)例:
% =========================================================================
% % 隨機(jī)數(shù)據(jù)生成并拼成矩陣
% h1=randi([8,18],[1,35])+rand([1,35]);
% h2=randi([2,8],[1,35])+rand([1,35]);
% h3=randi([0,3],[1,35])+rand([1,35]);
% h=[h1;h2;h3];
% 
% wr=windrose(h);% 等同于 wr=windrose(h,[0,2*pi]);
% % wr=windrose(h,[0:5:30,31:1:59]./59.*2.*pi);
% wr=wr.draw();
% 
% wr.setStyle('LineWidth',1.2,'FaceAlpha',.8,'EdgeColor',[.2,.2,.2])
% wr.setLConf(4)
% 
% % 將第二層變成綠
% % wr.setColor([.1,.8,.1],2)
% % 將第一第二層變成黑色
% % wr.setColor([0,.2,0;0 0 .2],[1,3])
% 
% % 添加圖例
% lgd=legend(wr.Children,'CLASS 1','CLASS 2','CLASS 3');
% lgd.Location='best';

    properties
        HSet       % mxn 大小數(shù)據(jù),m組數(shù)據(jù),每組n個(gè)柱
        ThetaSet   % 1x(n+1) 分隔角度
        histType   % 可初始化屬性

        LConfHdl   % 下邊界圖形對(duì)象

        Parent
        Children
    end

    methods
        function obj=windrose(varargin)
            % 變量數(shù)據(jù)讀取及傳入
            if isa(varargin{1},'matlab.graphics.axis.PolarAxes')
                ax=varargin{1};varargin(1)=[];
            else
                ax=polaraxes(gcf);
            end
            hold on
            obj.Parent=ax;
            obj.HSet=varargin{1};varargin(1)=[];
            if ~isempty(varargin)&&isfloat(varargin{1})
                if length(varargin{1})==2
                    obj.ThetaSet=linspace(varargin{1}(1),varargin{1}(2),size(obj.HSet,2)+1);
                else
                    obj.ThetaSet=varargin{1};
                end
                varargin(1)=[];
            else
                obj.ThetaSet=linspace(0,2*pi,size(obj.HSet,2)+1);
            end
            obj.histType=varargin;
            
        end
        function obj=draw(obj) % 循環(huán)繪圖
            tCoLorList=lines(size(obj.HSet,1));
            tHSet=cumsum(obj.HSet);

            for i=size(obj.HSet,1):-1:1
                obj.Children(i)=polarhistogram(obj.Parent,'BinEdges',...
                    obj.ThetaSet,'BinCounts',tHSet(i,:),'FaceAlpha',1,'FaceColor',tCoLorList(i,:),obj.histType{:});
            end
            % -------------------------------------------------------------
            % 繪制下邊界圓形
            obj.LConfHdl=polarhistogram(obj.Parent,'BinEdges',linspace(0,2*pi,101),...
                'BinCounts',ones([1,100]),'FaceColor','none','FaceAlpha',1,'EdgeColor','none');
        end
% =========================================================================

        function setStyle(obj,varargin) % 設(shè)置屬性
            for i=1:length(obj.Children)
                set(obj.Children(i),varargin{:});
            end
        end

        function setLConf(obj,LConf)% 設(shè)置下邊界
            if strcmp(LConf,'none')
                obj.LConfHdl.FaceColor='none';
            else
                obj.LConfHdl.FaceColor=obj.Parent.Color;
                obj.LConfHdl.BinCounts=ones([1,100]).*LConf;
            end
        end

        function setColor(obj,colorList,n)% 顏色
            k=1;
            for i=n
                set(obj.Children(i),'FaceColor',colorList(k,:));
                k=k+1;
            end
        end
    end
end

part3: 兩個(gè)使用示例

示例一

% windrose demo 1

% 隨機(jī)數(shù)據(jù)生成并拼成矩陣
h1=randi([8,18],[1,35])+rand([1,35]);
h2=randi([2,8],[1,35])+rand([1,35]);
h3=randi([0,3],[1,35])+rand([1,35]);
h=[h1;h2;h3];

wr=windrose(h);
wr=wr.draw();

% 圖像屬性設(shè)置
wr.setStyle('LineWidth',1.2,'FaceAlpha',.8,'EdgeColor',[.2,.2,.2])

% 添加下界限
wr.setLConf(4)

% 將第二層變成綠
% wr.setColor([.1,.8,.1],2)
% 將第一第二層變成黑色
% wr.setColor([0,.2,0;0 0 .2],[1,3])

% 添加圖例
lgd=legend(wr.Children,'CLASS 1','CLASS 2','CLASS 3');
lgd.Location='best';

% 坐標(biāo)區(qū)域修飾
ax=gca;
ax.LineWidth=1.5;
ax.GridLineStyle='-.';
ax.FontName='Cambria';
ax.FontSize=13;

示例二

% windrose demo 2

% 隨機(jī)數(shù)據(jù)生成并拼成矩陣
h1=randi([8,18],[1,35])+rand([1,35]);
h2=randi([2,8],[1,35])+rand([1,35]);
h3=randi([0,3],[1,35])+rand([1,35]);
h=[h1;h2;h3];

% 生成極坐標(biāo)區(qū)域,并更改背景顏色
ax=polaraxes(gcf);
ax.Color=[60,60,60]./255;
ax.GridColor=[212,217,217]./255;
ax.LineWidth=1.5;
ax.GridLineStyle='-.';
ax.FontName='Cambria';
ax.FontSize=13;

% 生成風(fēng)玫瑰圖
wr=windrose(ax,h);
wr=wr.draw();

% 屬性修飾
wr.setStyle('LineWidth',1.2,'FaceAlpha',1,'EdgeColor',[.2,.2,.2])
wr.setLConf(4)

% 修改顏色
colorList=[194,196,191;
           212,217,217;
           110,135,117]./255;
wr.setColor(colorList,1:3)

到此這篇關(guān)于Matlab實(shí)現(xiàn)極坐標(biāo)堆疊柱狀圖的繪制的文章就介紹到這了,更多相關(guān)Matlab堆疊柱狀圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++詳解非類型模板參數(shù)Nontype與Template及Parameters的使用

    C++詳解非類型模板參數(shù)Nontype與Template及Parameters的使用

    除了類型可以作為模板參數(shù),普通值也可以作為模板函數(shù),即非類型模板參數(shù)(Nontype Template Parameters)。下面讓我們一起了解一下
    2022-06-06
  • C++ 讓函數(shù)返回?cái)?shù)組的方法

    C++ 讓函數(shù)返回?cái)?shù)組的方法

    這篇文章主要介紹了C++ 讓函數(shù)返回?cái)?shù)組的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • QT打包發(fā)布全流程(圖文教程)

    QT打包發(fā)布全流程(圖文教程)

    本文主要介紹了QT打包發(fā)布全流程,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 一文讀懂C++中指針和內(nèi)存分配

    一文讀懂C++中指針和內(nèi)存分配

    我們知道聲明的所有變量在內(nèi)存中都有一個(gè)特定的地址。聲明一個(gè)指針變量來指向內(nèi)存中的這些地址,這篇文章主要介紹了C++中指針和內(nèi)存分配,需要的朋友參考下吧
    2021-06-06
  • Cocos2d-x保存用戶游戲數(shù)據(jù)之XML文件是否存在問題判斷方法

    Cocos2d-x保存用戶游戲數(shù)據(jù)之XML文件是否存在問題判斷方法

    這篇文章主要介紹了Cocos2d-x保存用戶游戲數(shù)據(jù)之XML文件是否存在問題判斷方法,請(qǐng)注意代碼中包含大量注釋,需要的朋友可以參考下
    2014-09-09
  • QString的常用方法(小結(jié))

    QString的常用方法(小結(jié))

    這篇文章主要介紹了QString的常用方法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 深入了解一下C語(yǔ)言中的柔性數(shù)組

    深入了解一下C語(yǔ)言中的柔性數(shù)組

    柔性數(shù)組是在C99中定義的,即結(jié)構(gòu)體的最后一個(gè)元素允許是未知大小的數(shù)組,這就叫柔性數(shù)組。這篇文章將通過簡(jiǎn)單的示例為大家介紹一下柔性數(shù)組的使用,感興趣的可以了解一下
    2023-02-02
  • C語(yǔ)言楊氏矩陣查找算法實(shí)例講解

    C語(yǔ)言楊氏矩陣查找算法實(shí)例講解

    楊氏矩陣是一個(gè)數(shù)字矩陣,矩陣的每一行從左到右一次遞增,矩陣從上到下遞增,在這樣的矩陣中查找一個(gè)數(shù)字是否存在。時(shí)間復(fù)雜度小于O(N),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-09-09
  • C/C++自主分配出現(xiàn)double free or corruption問題解決

    C/C++自主分配出現(xiàn)double free or corruption問題解決

    這篇文章主要為大家介紹了C/C++出現(xiàn)double free or corruption問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • C++超詳細(xì)實(shí)現(xiàn)二叉樹的遍歷

    C++超詳細(xì)實(shí)現(xiàn)二叉樹的遍歷

    本章將會(huì)詳細(xì)講解二叉樹遍歷的四種方式,分別為前序遍歷、中序遍歷、后續(xù)遍歷和層序遍歷。在學(xué)習(xí)遍歷之前,會(huì)先帶大家回顧一下二叉樹的基本概念
    2022-05-05

最新評(píng)論

吴川市| 聊城市| 五指山市| 客服| 会同县| 龙州县| 马尔康县| 桃园县| 饶阳县| 庆元县| 扎赉特旗| 靖远县| 昌吉市| 崇信县| 奎屯市| 巴南区| 金门县| 盐山县| 阿图什市| 中山市| 乐清市| 铜山县| 寻甸| 陆良县| 襄城县| 大同县| 紫阳县| 金华市| 马龙县| 静安区| 高台县| 河西区| 红原县| 西盟| 青冈县| 壤塘县| 克拉玛依市| 灵武市| 武平县| 望谟县| 辽阳市|