返回顶部
首页 > 资讯 > 精选 >Matlab如何实现绘制有气泡感的网络图
  • 439
分享到

Matlab如何实现绘制有气泡感的网络图

2023-07-05 04:07:46 439人浏览 安东尼
摘要

这篇文章主要介绍“Matlab如何实现绘制有气泡感的网络图”,在日常操作中,相信很多人在Matlab如何实现绘制有气泡感的网络图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Matlab如何实现绘制有气泡感的

这篇文章主要介绍“Matlab如何实现绘制有气泡感的网络图”,在日常操作中,相信很多人在Matlab如何实现绘制有气泡感的网络图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Matlab如何实现绘制有气泡感的网络图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    绘制效果如下:

    Matlab如何实现绘制有气泡感的网络图

    0 数据准备

    数据需要的关系矩阵需要的是反对称矩阵:

    % 随机生成100x100的反对角矩阵Data=(rand(100)-.5).*(rand(100)>.978);Data(1:30,:)=Data(1:30,:).*3;Data=tril(Data)-tril(Data)';% 生成100x1列向量,分类标签为1-10Class=(1:10).*ones(10,1);Class=Class(:);

    1 基础绘图

    两行代码完事:

    % 基础绘图BD=bubbleDigraph(Data,Class);BD=BD.draw();

    Matlab如何实现绘制有气泡感的网络图

    2 气泡大小

    可以使用bubblesize函数设置气泡大小范围,例如:

    bubblesize([5,40])

    Matlab如何实现绘制有气泡感的网络图

    3 气泡颜色

    使用setBubbleColor函数设置颜色:

    BD.setBubbleColor(turbo(10))

    Matlab如何实现绘制有气泡感的网络图

    4 气泡其他属性

    可以使用setBubble函数进行设置,bubblechart图形对象具有的属性均可以修改:

    BD.setBubble('MarkerFaceAlpha',.2,'MarkerEdgeColor',[0,0,0])

    Matlab如何实现绘制有气泡感的网络图

    5 连线配色

    直接使用colORMap函数即可设置:

    colormap(bone)

    Matlab如何实现绘制有气泡感的网络图

    6 添加节点及类标签

    分别使用:

    俩属性设置两种标签:

    for i=1:100    nodeName{i}=[num2str(Class(i)),'-',num2str(i)];endclassName={'AAAAA','BBBBB','CCCCC','DDDDD','EEEEE','FFFFF','GGGGG','HHHHH','IIIII','JJJJJ'};BD=bubbleDigraph(Data,Class,'NodeName',nodeName,'ClassName',className);BD=BD.draw();bubblesize([5,25])

    Matlab如何实现绘制有气泡感的网络图

    7 标签距离

    分别通过:

    • RNode

    • RClass

    俩属性设置两种标签距离中心的距离:

    BD=bubbleDigraph(Data,Class,'NodeName',nodeName,'ClassName',className,'RClass',1.38,'RNode',1.2);BD=BD.draw();

    Matlab如何实现绘制有气泡感的网络图

    8 设置字体

    分别使用:

    • setNodeLabel

    • setClassLabel

    俩函数设置两种标签的属性:

    BD.setNodeLabel('FontName','Cambria','Color',[0,0,.8])BD.setClassLabel('FontName','Cambria','Color',[.8,0,0],'FontSize',14)

    Matlab如何实现绘制有气泡感的网络图

    工具函数完整代码

    classdef bubbleDigraph% @author : slandarer% 公众号  : slandarer随笔 % Zhaoxu Liu / slandarer (2023). bubble digraph % (https://www.mathworks.com/matlabcentral/fileexchange/125140-bubble-digraph), % MATLAB Central File Exchange. 检索来源 2023/2/21.    properties        ax,arginList={'ColorOrder','Colormap','ClassName','NodeName','BubbleSize','RClass','RNode'}        ClassName   % 类名称        NodeName    % 节点名称        % 节点配色        ColorOrder=[0.6510    0.8078    0.8902;    0.1216    0.4706    0.7059;    0.6980    0.8745    0.5412                    0.2000    0.6275    0.1725;    0.9843    0.6039    0.6000;    0.8902    0.1020    0.1098                    0.9922    0.7490    0.4353;    1.0000    0.4980         0;    0.7922    0.6980    0.8392                    0.4157    0.2392    0.6039;    1.0000    1.0000    0.6000;    0.6941    0.3490    0.1569];        % 连线配色        Colormap=[1.0000    0.9686    0.9529;    0.9980    0.9454    0.9307;    0.9960    0.9221    0.9084;    0.9939    0.8988    0.8861                  0.9920    0.8750    0.8630;    0.9910    0.8477    0.8336;    0.9900    0.8204    0.8043;    0.9890    0.7930    0.7750;                      0.9877    0.7629    0.7502;    0.9857    0.7245    0.7390;    0.9837    0.6860    0.7279;    0.9817    0.6476    0.7168;                      0.9793    0.6027    0.7022;    0.9762    0.5470    0.6820;    0.9732    0.4913    0.6617;    0.9701    0.4357    0.6415;                      0.9555    0.3815    0.6263;    0.9292    0.3289    0.6162;    0.9028    0.2763    0.6061;    0.8765    0.2237    0.5960;                      0.8369    0.1717    0.5763;    0.7894    0.1201    0.5510;    0.7418    0.0684    0.5257;    0.6942    0.0168    0.5004;                      0.6429    0.0039    0.4888;    0.5903    0.0039    0.4817;    0.5376    0.0039    0.4746;    0.4850    0.0039    0.4676;                      0.4350    0.0030    0.4552;    0.3855    0.0020    0.4420;    0.3359    0.0010    0.4288;    0.2863         0    0.4157];        Data,Class          % 有向图及节点分类        BubbleSize=[5,25];  % 节点气泡大小范围[min,max]        LineWidth=1.5;      % 连接线粗细        AlphaLim=[.1,.9];        ClassSet,ClassNum,        RClass=1.25;        RNode=1.08;        ColorList;        bubbleHdl,nodeLabelHdl,classLabelHdl    end    methods        function obj=bubbleDigraph(Data,Class,varargin)            obj.Data=Data;            obj.Class=Class(:);            obj.ClassSet=unique(Class);            obj.ClassNum=length(obj.ClassSet);            for i=1:size(obj.Data,1)                obj.NodeName{i}='';            end            for i=1:obj.ClassNum                obj.ClassName{i}='';            end                        % 获取其他数据            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 obj.ClassNum>size(obj.ColorOrder,1)                obj.ColorOrder=[obj.ColorOrder;rand([obj.ClassNum,3])];            end        end        function obj=draw(obj)            obj.ax=GCa;hold on;            colormap(obj.Colormap)            obj.ax.XLim=[-1.2,1.2];            obj.ax.YLim=[-1.2,1.2];            obj.ax.XTick=[];            obj.ax.YTick=[];            obj.ax.XColor='none';            obj.ax.YColor='none';            obj.ax.PlotBoxAspectRatio=[1,1,1];            % 调整初始界面大小            fig=obj.ax.Parent;            fig.Color=[1,1,1];            if max(fig.Position(3:4))<600                fig.Position(3:4)=1.8.*fig.Position(3:4);                fig.Position(1:2)=fig.Position(1:2)./3;            end            % 绘制气泡            thetaList=linspace(0,2*pi,size(obj.Data,1)+1);thetaList(end)=[];            XList=cos(thetaList);YList=sin(thetaList);            obj.bubbleHdl=bubblechart(XList,YList,sum(abs(obj.Data)));            bubblesize(obj.BubbleSize)            obj.ColorList=zeros(size(obj.Data,1),3);            for i=1:length(obj.ClassSet)                obj.ColorList(obj.Class==obj.ClassSet(i),:)=...                    repmat(obj.ColorOrder(i,:),sum(obj.Class==obj.ClassSet(i)),1);            end            obj.bubbleHdl.CData=obj.ColorList;            % 绘制连线            alphaData=abs(obj.Data);            alphaData=alphaData-min(min(alphaData));            alphaData=alphaData./max(max(alphaData));            alphaData=alphaData.*(obj.AlphaLim(2)-obj.AlphaLim(1))+obj.AlphaLim(1);            for i=1:size(obj.Data,1)                for j=1:i-1                    if obj.Data(i,j)~=0                        bezierX=[cos(thetaList(i)),0,cos(thetaList(j))].*.93;                        bezierY=[sin(thetaList(i)),0,sin(thetaList(j))].*.93;                        bezierPnts=bezierCurve([bezierX',bezierY'],100);                        bezierX=[bezierPnts(:,1);nan];                        bezierY=[bezierPnts(:,2);nan];                        fill(bezierX,bezierY,linspace(-1,1,101).*obj.Data(i,j)./abs(obj.Data(i,j)),'EdgeColor','interp',...                            'LineWidth',obj.LineWidth,'EdgeAlpha',alphaData(i,j))                    end                end            end            % 绘制节点标签            for i=1:size(obj.Data,1)                Ti=thetaList(i);                rotation=Ti/pi*180;                if rotation>90&&rotation<270                    rotation=rotation+180;                    obj.nodeLabelHdl(i)=text(cos(Ti).*obj.RNode,sin(Ti).*obj.RNode,obj.NodeName{i},...                        'Rotation',rotation,'HorizontalAlignment','right','FontSize',9);                else                    obj.nodeLabelHdl(i)=text(cos(Ti).*obj.RNode,sin(Ti).*obj.RNode,obj.NodeName{i},...                        'Rotation',rotation,'FontSize',9);                end            end            % 绘制类标签            for i=1:obj.ClassNum                CTi=mean(thetaList(obj.Class==obj.ClassSet(i)));                rotation=CTi/pi*180;                if rotation>0&&rotation<180                    obj.classLabelHdl(i)=text(cos(CTi).*obj.RClass,sin(CTi).*obj.RClass,obj.ClassName{i},'FontSize',14,'FontName','Arial',...                    'HorizontalAlignment','center','Rotation',-(.5*pi-CTi)./pi.*180);                else                    obj.classLabelHdl(i)=text(cos(CTi).*obj.RClass,sin(CTi).*obj.RClass,obj.ClassName{i},'FontSize',14,...                    'HorizontalAlignment','center','Rotation',-(1.5*pi-CTi)./pi.*180);                end            end            % 贝塞尔函数            function pnts=bezierCurve(pnts,N)                t=linspace(0,1,N);                p=size(pnts,1)-1;                coe1=factorial(p)./factorial(0:p)./factorial(p:-1:0);                coe2=((t).^((0:p)')).*((1-t).^((p:-1:0)'));                pnts=(pnts'*(coe1'.*coe2))';            end        end        % 修改气泡颜色        function obj=setBubbleColor(obj,ColorList)            obj.ColorOrder=ColorList;            for i=1:length(obj.ClassSet)                obj.ColorList(obj.Class==obj.ClassSet(i),:)=...                    repmat(obj.ColorOrder(i,:),sum(obj.Class==obj.ClassSet(i)),1);            end            set(obj.bubbleHdl,'CData',obj.ColorList);        end        % 修改气泡其他属性        function obj=setBubble(obj,varargin)            set(obj.bubbleHdl,varargin{:});        end        % 设置标签        function setNodeLabel(obj,varargin)            for i=1:size(obj.Data,1)                set(obj.nodeLabelHdl(i),varargin{:});            end        end        function setClassLabel(obj,varargin)            for i=1:obj.ClassNum                set(obj.classLabelHdl(i),varargin{:});            end        end    end% @author : slandarer% 公众号  : slandarer随笔 % Zhaoxu Liu / slandarer (2023). bubble digraph % (Https://www.mathworks.com/matlabcentral/fileexchange/125140-bubble-digraph), % MATLAB Central File Exchange. 检索来源 2023/2/21.end

    到此,关于“Matlab如何实现绘制有气泡感的网络图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: Matlab如何实现绘制有气泡感的网络图

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

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

    猜你喜欢
    • Matlab实现绘制有气泡感的网络图
      目录教程部分0 数据准备1 基础绘图2 气泡大小3 气泡颜色4 气泡其他属性5 连线配色6 添加节点及类标签7 标签距离8 设置字体工具函数完整代码今天给大家带来一款用来绘制有气泡感...
      99+
      2023-02-22
      Matlab绘制网络图 Matlab 网络图
    • Matlab如何实现绘制有气泡感的网络图
      这篇文章主要介绍“Matlab如何实现绘制有气泡感的网络图”,在日常操作中,相信很多人在Matlab如何实现绘制有气泡感的网络图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Matlab如何实现绘制有气泡感的...
      99+
      2023-07-05
    • 如何在Python中使用ECharts绘制气泡图
      如何在Python中使用ECharts绘制气泡图ECharts是一个基于JavaSript的数据可视化库,它提供了丰富的图表类型,包括柱状图、折线图、饼图等。在ECharts中,气泡图是一种常用的图表类型,它可以通过不同大小的圆点来展示数据...
      99+
      2023-12-17
      Python echarts 气泡图
    • 如何利用Matlab绘制有趣图像
      这篇文章主要介绍了如何利用Matlab绘制有趣图像,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.随机樱花树function sakura% @auth...
      99+
      2023-06-29
    • 基于Matlab实现山脊图的绘制
      目录纯色山脊图模板渐变色山脊图模板写了一个用于绘制山脊图的模板,仅需要往需要填写数据的区域填入数据点击运行即可,以下提供两款模板,第一款为纯色模板而第二款为渐变色模板: 纯色山脊图模...
      99+
      2024-04-02
    • Python&Matlab实现伏羲八卦图的绘制
      目录1 与达尔文对话2 与老子对话2.1 Python实现2.2 Matlab实现 1 与达尔文对话 140年前,1858年7月1日,达尔文在英伦岛发表了自己有关自然选择的...
      99+
      2024-04-02
    • 详解Matlab实现动态表白图的绘制
      目录1.幸福和快乐的哲学追问2.提前祝女朋友节日快乐2.1 展现2.2 代码1.幸福和快乐的哲学追问 在过去的500年间,我们见证了一连串令人惊叹的革命。地球在生态和历史上都已经整合...
      99+
      2024-04-02
    • Matlab怎么实现动态表白图的绘制
      这篇文章主要介绍了Matlab怎么实现动态表白图的绘制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Matlab怎么实现动态表白图的绘制文章都会有所收获,下面我们一起来看看吧。提前祝女朋友节日快乐1 展现这里没...
      99+
      2023-06-30
    • 利用Matlab实现阴影柱状图的绘制
      目录示例图使用教程1.基本使用2.添加图例3.阴影格式4.特殊结构5.额外修饰工具函数完整代码封面图绘制代码阴影柱状图绘制的代码MATHWORKS上也有,不过是生成图片后,识别图像上...
      99+
      2024-04-02
    • C++调用matlab引擎实现三维图的绘制
      目录VS2012设置matlab程序VS2012控制台程序运行结果说明VS2012设置 项目–项目属性–配置属性–VC++目录–包含目...
      99+
      2022-12-27
      C++ matlab绘制三维图 C++ 绘制三维图 matlab 三维图
    • Matlab实现极坐标堆叠柱状图的绘制
      目录part1: 函数介绍基本使用角度范围常用函数:改变样式常用函数:设置下界常用函数:修改颜色添加图例part2: 完整类函数代码part3: 两个使用示例示例一示例二极坐标堆叠图...
      99+
      2022-11-13
      Matlab堆叠柱状图 Matlab 柱状图
    • Python如何实现批量绘制遥感影像数据的直方图
      这篇文章主要介绍“Python如何实现批量绘制遥感影像数据的直方图”,在日常操作中,相信很多人在Python如何实现批量绘制遥感影像数据的直方图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python如何实...
      99+
      2023-07-05
    • 基于Matlab实现离散系统分岔图的绘制
      目录1.一维离散分岔图2.二维离散分岔图3.封面图绘制1.一维离散分岔图 一维那非常简单哈,就循环着画呗,以下举两个简单的例子 : % x(n+1)=1-r*x(n)^2 % ...
      99+
      2024-04-02
    • win10网络正常网络图标有黄色感叹号如何解决
      今天小编给大家分享一下win10网络正常网络图标有黄色感叹号如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。解决方法:...
      99+
      2023-07-01
    • 如何利用Matlab绘制出好看的火山图
      这里画了一个示例: 数据来源 绘制效果: 代码及说明: 使用代码时只需要改一开始导入的数据,和代码提示中X坐标区域范围和Y坐标区域范围,完整代码如下所示: % 读取数据 data=...
      99+
      2024-04-02
    • Python+matplotlib如何实现饼图的绘制
      这篇文章主要介绍Python+matplotlib如何实现饼图的绘制,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、整理数据关于cnboo1.xlsx,我放在我的码云里,需要的朋友自行下载:cnboo1.xlsxf...
      99+
      2023-06-29
    • Matlab实现四种HSV色轮图绘制的示例代码
      前言 有粉丝问我图(d)上的色盘图咋画: 明度(V)渐变版 注意,此处是为了还原论文中图片所以X加了。 % 生成网格 tList=linspace(0,2.*pi,300...
      99+
      2024-04-02
    • Python matplotlib如何实现图形绘制
      本篇内容主要讲解“Python matplotlib如何实现图形绘制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python matplotlib如何实现图形绘制”吧!1....
      99+
      2023-06-21
    • WPF如何实现绘制3D图形
      今天小编给大家分享一下WPF如何实现绘制3D图形的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。关键概念视口视口指的是图像要展...
      99+
      2023-07-05
    • Html5饼图如何绘制实现统计图
      小编给大家分享一下Html5饼图如何绘制实现统计图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!这个图是动态生成的,根据传入的比例参数(数组),来动态绘制饼图。饼...
      99+
      2023-06-09
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作