绘制效果
请叫我平平无奇的绘图天才,这期一次性带来俩工具函数,分别是两层和三层的环形树状图,可以用来展示数据分类和层级:
理顺层级关系属实理得头秃,代码编写不易点个赞
叭!!
由于工具函数过长,将被放在最后展示,以下将先展示函数用法。
双层环形树状图 基本使用处理的数据对象是两列的元胞数组,数组内容物为字符串,像下面这样:
treeList={'竞赛','数学竞赛';'竞赛','英语竞赛';'竞赛','美赛';'竞赛','数模国赛';'竞赛','网络挑战赛';'竞赛','英语翻译';
'编程','python';'编程','MATLAB';'编程','C#';'编程','C++';'编程','C';'编程','java';'编程','js';'编程','R';'编程','html';
'编程','php';'编程','rust';'编程','julia';'编程','perl';'编程','carbon';'编程','lisp';
'技能','office';'技能','LaTeX';'技能','PS';'技能','PR';'技能','excel';'技能','视频剪辑';'技能','bat';
'基础知识','代数集合';'基础知识','傅里叶';'基础知识','抽代';'基础知识','数分';'基础知识','高代';'基础知识','解几';
'基础知识','实变';'基础知识','复变';'基础知识','运筹学';'基础知识','泛函';'基础知识','张量分解';'基础知识','概率论';
'开发工具','eclipse';'开发工具','git';'开发工具','svn';'开发工具','gitee';'开发工具','jupyter';'开发工具','macos';
'开发工具','postman';'开发工具','vscode';'开发工具','mdnice';'开发工具','pycharm';'开发工具','vim';'开发工具','svn';
'爱好','国画';'爱好','乒乓球';'爱好','折纸';'爱好','雕刻';'爱好','篮球';'爱好','足球'
'爱好','唱';'爱好','跳';'爱好','rap';'爱好','背带裤制作';'爱好','理发'};
CT=circleTree2(treeList);
CT=CT.draw();
好,画完结束了,当然线更多会比较好看,这里自己构造一些ABCD类再画个图:
treeList={[],[]};
k=1;
classNameSet={'A','B','C','D','E','F'};
classNumSet=[20,20,20,25,30,35];
for i=1:6
for j=1:classNumSet(i)
treeList{k,1}=['CLASS ',classNameSet{i}];
treeList{k,2}=[classNameSet{i},num2str(j)];
k=k+1;
end
end
CT=circleTree2(treeList);
CT=CT.draw();
使用setColorN
设置各个类的颜色,比如将第2个类设为红色:
CT.setColorN(2,[.8,0,0]);
循环全部设置为灰色:
for i=1:6
CT.setColorN(i,[.8,.8,.8]);
end
使用setLable1
和setLable1
修改两层文本字体,例如:
CT.setLable1('FontSize',16,'Color',[0,0,.8]);
CT.setLable2('FontSize',13,'Color',[0,.6,.8]);
与上面双层环形树状图绘制方式一模一样,三层的不太好构造,这里直接从excel读取数据绘制,数据为往年诺贝尔奖获得者及其奖项、国籍
读取数据并绘制三层环形树状图:
treeList=readcell('data.xlsx');
treeList=treeList(:,1:3);
CT=circleTree3(treeList);
CT=CT.draw();
其他属性设置方式与之前的双层绘制函数完全相同,由于怕文字互相遮挡,故只展示占比大于5%的类,想要隐藏或显示全部类,可以设置文本的Visible
属性为on/off
:
CT.setLable2('Visible','on');
虽然有点乱,但是可以缩放查看细节:
大量代码,前方高能!!
双层classdef circleTree2
% @author : slandarer
% gzh : slandarer随笔
properties
ax,treeList
ClassLine,ChildLine
ClassScatter,MeanScatter
LabelHdl0,LabelHdl1
end
methods
function obj=circleTree2(treeList)
obj.ax=gca;hold on;
obj.treeList=treeList;
end
function obj=draw(obj)
% 坐标区域属性设置 ==============================================
obj.ax=gca;hold on
obj.ax.XLim=[-1,1];
obj.ax.YLim=[-1,1];
obj.ax.XTick=[];
obj.ax.YTick=[];
obj.ax.XColor='none';
obj.ax.YColor='none';
obj.ax.PlotBoxAspectRatio=[1,1,1];
fig=obj.ax.Parent;
if max(fig.Position(3:4))90&&rotation90&&rotation
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?