文件交换的选择

我们最好的用户提交

Treemap

肖恩本周的选择Treemap通过乔Hicklin

内容

单一Treemap

我最近一直在与我们的一个营销团队中使用MATLAB可视化整个组织或大学基于部门。一个很好的方法就是treemap因为它允许分层可视化。让我们看一看一个单层treemap综合大学。数据存储在表激活与变量大学部门

collcounts = countcats (activations.College);%多少在每个大学?r = treemap (collcounts);%建立树的矩形plotRectangles (r,类别(activations.College))%绘制树图

分层Treemap

看起来不错,但它只是一层。我们也有信息部门在一个大学。包括这个,我将使用findgroups / splitapply工作流将部门根据他们的大学。

%的大学collegeidx = findgroups (activations.College);%计算激活的数量在每个部门和本学院deptcounts = splitapply (@ (x){非零(countcats (x))}, activations.Department, collegeidx);%保持名称的标签deptnames = splitapply (@ (x){类别(removecats (x))}, activations.Department, collegeidx);

现在我们要复制并修改乔的示例代码插入我的新数据。

m = 39;%系的颜色2 = 1:元素个数(deptcounts)颜色= (3 * repmat(兰德(1,3),m, 1) +兰德(m, 3)) / 4;rNew = treemap (deptcounts {2}”, r (ii)、r (ii));rNew (1) = rNew (: 1) + r (1、2);rNew (2) = rNew (2:) + r (2, 2);plotRectangles (rNew deptnames{2}、颜色)结束%大纲大学盒子大纲(右)

交互式Treemap

在我大监控炸毁看起来不错。但是有点忙压缩。我会加强它,这样你可以扩展一个学校或“深入”。首先,重复上述步骤,但离开部门的标签。

图plotRectangles (r,类别(activations.College));2 = 1:元素个数(deptcounts)颜色= (3 * repmat(兰德(1,3),m, 1) +兰德(m, 3)) / 4;rNew = treemap (deptcounts {2}”, r (ii)、r (ii));rNew (1) = rNew (: 1) + r (1、2);rNew (2) = rNew (2:) + r (2, 2);plotRectangles (rNew,[],颜色)结束大纲(右)

第二,我将禁用补丁的能力通过关闭他们的交互“HitTest”财产。

补丁= findall (gca),“类型”,“补丁”);集(补丁,“HitTest”,“关闭”)

最后,添加一个按钮回调的轴调用我的自定义函数爆炸。

函数explodeBlock (evt, r, nsubs sublabels)%炸毁一个街区在树上地图%,被击中xyhit = evt.IntersectionPoint (1:2);%矩形?点= xyhit (1) > r (1:) & (xyhit (1) < r (1:) + (3,:));iny = xyhit (2) > r (2:) & (xyhit (2) < r (2:) + (4:));idx =点& iny;%炸毁,矩形图rnew = treemap (nsubs {idx});图plotRectangles (rnew sublabels {idx})结束
集(gca),“可见”,“上”甘氨胆酸)组(,“ButtonDownFcn”@ (~ evt) explodeBlock (evt, r, deptcounts deptnames))

反馈

使用treemap实用程序是非常简单和乔提供了不错的所有功能的例子。不过我确实有一些改进:

  1. plotRectangles大纲他们创造的补丁可以返回句柄。这将允许我跳过草率的调用findobj我上面。
  2. 文本,正如您可能已经注意到的,往往重叠。就好了文本的抖动或旋转,避免碰撞。

评论

试一试,让我们知道你的想法在这里或者离开评论乔。




发表与MATLAB®R2016b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。