MATLAB社区

MATLAB,社区和更多

在图形上覆盖信息

在一篇题为集中在缩放鲍提出了一个很好的问题我认为在另一篇文章中回答这个问题会很有用。这个问题涉及到在一个图表上覆盖数据的能力。在最简单的情况下,可以通过在可见轴之上放置不可见轴来实现叠加。不管需要覆盖的情况有多不同,都有不同的情况。在这篇文章中,我将检查不同的覆盖,以及如何在MATLAB中创建它们。

内容

装修一个对象

使用叠加的最常见原因之一是将注意力吸引到感兴趣的情节上。例如,如果我们有四个包含数据的子图,我们可能希望将注意力放在其中一个子图上。

图;次要情节(2 2 1);情节(兰德(3));interestingAxes =情节(2 2 2);情节(魔法(3));次要情节(2、2、3);情节(兰德(3));次要情节(2、2、4);情节(兰德(3));

在上面的图中,没有任何东西表明一个轴是否比另一个轴更重要。突出我们想强调的轴是有益的。

我们首先创建一个不可见的轴,它的位置覆盖整个图形。

invisibleAxes =轴(“可见”“关闭”“位置”,[0 0 1 1],...“XLim”[0, 1],“YLim”[0, 1],“HitTest”“关闭”);

设置XLimYLim属性确保当我们处理归一化到图形的坐标时,它们也将归一化到坐标轴。的HitTest属性告诉ZOOM等工具在与图形交互时忽略该轴。

控件,我们将在感兴趣的轴周围创建一个粉色边框矩形命令:

边境=矩形(“父”invisibleAxes,...“位置”得到(interestingAxes“位置”),...“EdgeColor”, [1 .4 .4],...“线宽”,4,“HitTest”“关闭”);

粉色矩形现在表示图形的哪个区域可能是重要的。

关闭;

注释一个阴谋

在某些情况下,图形太大了,无法在画布上进行交流。在这种情况下,我们可能希望关注数据的各个方面。这些注释会出现在数据的顶部。对于这种情况,我们将使用较小的覆盖轴。我们将确保这个轴具有与原始图相同的X和Y限制linkaxes命令。

图;dataAxes =轴;情节(魔法(3));invisibleAxes =轴(“可见”“关闭”...“位置”得到(dataAxes“位置”),...“HitTest”“关闭”“XLimMode”“手动”“YLimMode”“手动”);linkaxes ([dataAxes invisibleAxes]);

如果希望引起对某个区域的注意,现在可以使用注释将信息放置到不可见轴中。

矩形(“父”invisibleAxes,“位置”,[1.6 5 .2 1],...“EdgeColor”(1。4。4),“线宽”4);文本(“父”invisibleAxes,“字符串”没有数据的...“HorizontalAlignment”“中心”“VerticalAlignment”“底”...“位置”[1.7 6 0]);

由于这些限制是链接的,当图形被平移或缩放时,粉色框和相关文本将随数据移动。

变焦(2);

关闭;

添加瞬态信息

有时,我们希望提供的信息可能是短暂的。例如,如果用户单击一行,我们可能希望看到有关该行的更多信息。在用户满意之后,这些信息就会消失。这种交互模型也可以通过叠加和图形回调来实现。

更复杂的情况可能是珠宝商的放大镜工具。在本例中,我们希望创建一个可见轴,以显示正在检查的数据的放大部分。下面的代码将创建一个不需要用户交互的放大镜。

图;dataAxes =轴;情节(魔法(3));计算坐标轴的中心:dataAxesPosition =得到(dataAxes,“位置”);xc = dataxesposition (1) + dataxesposition (3)/2;yc = dataxesposition (2) + dataxesposition (4)/2;%使用此信息计算总览的中心位置:loupeAxesPosition = [xc -。125年,yc -。125,.25,.25]; loupeAxes = axes(“位置”loupeAxesPosition,...“XTickLabel”“YTickLabel”“XTick”[],“YTick”[],“盒子”“上”);复制数据轴的子节点:copyobj (get (dataAxes,“孩子”), loupeAxes);将放大镜轴放大4倍:变焦(loupeAxes 4);

一个功能齐全的珠宝商的放大镜工具,它使用图形回调可以在文件交换中找到在这里

通常,坐标轴的用途不仅仅是显示图形。它还可以用作了解数据不同方面的窗口。在过去的情节中,你试图添加什么信息?

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里以登录您的MathWorks帐户或创建一个新的帐户。