【问题标题】:Annotation as a textbox at the top of a plot in matlab注释作为matlab中绘图顶部的文本框
【发布时间】:2015-06-30 18:29:41
【问题描述】:

我想问一些关于 Matlab 的问题。我在这个论坛上找不到这个。 我想在图中的图例框顶部创建一个新文本框。我正在尝试使用名为 annotation 的函数来执行此操作,但我做得不对,因为有时新框位于图例框上方。有什么办法可以让我的情节保持美观吗?

我正在使用此代码: 注释('文本框',[0.7 0.192 0.1 0.1],'字符串',{'OOI =',num2str(OOI)}); 我一直在玩这些数字,但我找不到合适的数字来做我想做的事。

我还有一个问题。对于某些情节,我的坐标轴不是从点 (0,0) 开始的。它从 (0,-something) 开始。我想知道是否有办法让它从(0,0)开始。我试过了

set(gca,'XTick', [0:20:300]); 设置(gca,'YTick',[0:0.1:1]);

但它不起作用。 你们能帮帮我吗? 任何帮助我都会很高兴。

【问题讨论】:

  • 你能用你用来生成图例的代码发布一个最小的工作示例吗?您可以将虚拟数据仅用于演示,这将更容易理解问题所在以及如何提供帮助。谢谢!

标签: matlab plot annotations set


【解决方案1】:

首先对于轴的问题:您必须设置XLimYLim,即set(gca,'XLim',[0 1],'YLim',[0 1])。您还应该将XLimModeYLimMode 设置为manual

对于textbox 的问题,您应该将annotationParent 属性设置为您的坐标轴,并将两者的Units 属性设置为normalized(或另一个,但必须相同)。根据我自己的经验,如果你运行的是 R2014b 之前的版本,那么定位annotation 效果不是很好,但是从 R2014b 开始,一旦你正确设置了Parent 属性,定位就不是问题了。

更新:给你的小例子,但是你可以使用 Matlab 的文档和谷歌!!!

f = figure('Position', [values_in_pixels]);
a = axes('Parent', f);
t = annotation('textbox', [0 0 1 1], 'EdgeColor', 'r');

此时,t 是一个注解,它是隐藏对象AnnotationPane 的子代:

>> tp = get(t, 'Parent')
tp = 
    AnnotationPane

tp 是你的图f 的孩子:

>> isequal(f, get(tp, 'Parent'))
ans =
     1

但是,t 目前是根据f 定位的,因为您可以看到红色边框适合该图。

t 的父属性更改为您的坐标轴a,您会看到红色边框适合您的坐标轴:

set(t, 'Parent', a);

更改t 的位置,您可以看到t 现在已根据您的轴定位:

set(t, 'Position', [.2 .5 .3 .1])

注意:由于默认情况下轴和注释都有Units = normalized,因此在将t 设置为a 的子级后,您在移动或重新定位注释时无需关心它。

【讨论】:

  • 你有我的文本框的例子吗?我的 Matlab 版本是 2015a。
  • 加了一个小例子,希望对你有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2015-09-06
  • 1970-01-01
  • 2015-03-17
相关资源
最近更新 更多