欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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)造類的過程,第一個輸入可以是高度矩陣,也可以是當(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ù)長度多1的角度序列,角度值要求[0,2π]范圍:

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

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

基本上的線條顏色,線條透明度,面透明度,線條粗細(xì)等patch對象具有的一系列屬性,均可以依靠此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è)置下界

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

wr.setLConf(4)

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

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

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

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

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

添加圖例

請使用返回對象的Children屬性添加圖例:

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

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

classdef windrose
% @author : slandarer
% 公眾號  : 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個柱
        ThetaSet   % 1x(n+1) 分隔角度
        histType   % 可初始化屬性

        LConfHdl   % 下邊界圖形對象

        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: 兩個使用示例

示例一

% 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c語言_構(gòu)建一個靜態(tài)二叉樹實(shí)現(xiàn)方法

    c語言_構(gòu)建一個靜態(tài)二叉樹實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猚語言_構(gòu)建一個靜態(tài)二叉樹實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • ReSharper 的安裝使用詳細(xì)教程

    ReSharper 的安裝使用詳細(xì)教程

    resharper安裝教程是關(guān)于vs2012一個非常好用的插件的安裝教程,建議大家嘗試安裝,今天通過本教程幫助大家學(xué)習(xí)ReSharper 的安裝使用詳細(xì)教程,感興趣的朋友一起看看吧
    2021-06-06
  • C語言實(shí)現(xiàn)三子棋小游戲(vs2013多文件)

    C語言實(shí)現(xiàn)三子棋小游戲(vs2013多文件)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言實(shí)現(xiàn)簡單航班管理系統(tǒng)

    C語言實(shí)現(xiàn)簡單航班管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單航班管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C語言中的switch語句基本用法

    C語言中的switch語句基本用法

    這篇文章主要介紹了C語言中switch語句的基本用法,switch語句是一個多分支選擇語句,并且可以支持嵌套,感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • 基于Qt播放器的實(shí)現(xiàn)詳解(支持Rgb,YUV格式)

    基于Qt播放器的實(shí)現(xiàn)詳解(支持Rgb,YUV格式)

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)簡易的播放器,可以支持支持Rgb,YUV格式。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-12-12
  • C++ Opengl圖形顏色功能附源碼下載

    C++ Opengl圖形顏色功能附源碼下載

    這篇文章主要介紹了C++ Opengl圖形顏色功能附源碼下載,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • C++中auto_ptr智能指針的用法詳解

    C++中auto_ptr智能指針的用法詳解

    這篇文章主要介紹了C++中auto_ptr智能指針的用法詳解的相關(guān)資料,需要的朋友可以參考下
    2016-07-07
  • Opencv光流運(yùn)動物體追蹤詳解

    Opencv光流運(yùn)動物體追蹤詳解

    這篇文章主要為大家詳細(xì)介紹了Opencv光流運(yùn)動物體追蹤的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 基于easyx的C++實(shí)現(xiàn)貪吃蛇

    基于easyx的C++實(shí)現(xiàn)貪吃蛇

    這篇文章主要為大家詳細(xì)介紹了基于easyx的C++實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論