注释作为 matlab 绘图顶部的文本框

Annotation as a textbox at the top of a plot in matlab

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

我正在使用这段代码: 注解('textbox',[0.7 0.192 0.1 0.1],'String',{'OOI =',num2str(OOI)}); 我一直在玩这些数字,但我找不到合适的数字来做我想做的事。

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

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

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

一开始有坐标轴的问题:你必须设置XLimYLim,即set(gca,'XLim',[0 1],'YLim',[0 1])。您还应该将 XLimModeYLimMode 设置为 manual

对于textbox的问题,你应该设置annotationParent属性为你的坐标轴,设置Units属性 ] 到 normalized (或另一个,但必须相同)。根据我自己的经验,如果你是 运行 版本早于 R2014b,那么定位 annotation 效果不是很好,但是从 R2014b 向上,一旦你正确设置 Parent 属性 ,定位没问题。

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

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

此时,t是一个注解,它是child一个隐藏的object AnnotationPane:

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

并且 tp 是 child 你的数字 f:

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

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

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

set(t, 'Parent', a);

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

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

注意:由于坐标轴和注解默认都有Units = normalized,当你设置ta的child后,你就不需要关心了在移动或 re-positioning 您的注释时。