注释作为 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]);
但它不起作用。
你们能帮帮我吗?
任何帮助我都会很高兴。
一开始有坐标轴的问题:你必须设置XLim
和YLim
,即set(gca,'XLim',[0 1],'YLim',[0 1])
。您还应该将 XLimMode
、YLimMode
设置为 manual
。
对于textbox
的问题,你应该设置annotation
的Parent
属性为你的坐标轴,设置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
,当你设置t
为a
的child后,你就不需要关心了在移动或 re-positioning 您的注释时。
想请教一些关于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]);
但它不起作用。 你们能帮帮我吗? 任何帮助我都会很高兴。
一开始有坐标轴的问题:你必须设置XLim
和YLim
,即set(gca,'XLim',[0 1],'YLim',[0 1])
。您还应该将 XLimMode
、YLimMode
设置为 manual
。
对于textbox
的问题,你应该设置annotation
的Parent
属性为你的坐标轴,设置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
,当你设置t
为a
的child后,你就不需要关心了在移动或 re-positioning 您的注释时。