首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB绘图图例中添加独立文本

如何在MATLAB绘图图例中添加独立文本
EN

Stack Overflow用户
提问于 2017-01-23 10:41:45
回答 4查看 11.9K关注 0票数 6

我需要一个图例中的附加文本,它与图形数据和图例标题无关。类似的东西(它是用OriginLab制作的):

按照这个链接Add custom legend without any relation to the graph,我可以使用plot(NaN,NaN,'display','add info here2', 'linestyle', 'none')添加一些文本。但在这篇文章中有一个缩进:

如何避免这种缩进?是否有一种更优雅的方法来添加与图例无关的文本和图例标题?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-23 20:34:24

legend函数将作为其第二个输出参数来返回,用于构成图例中的符号和文本的所有组件。因此,可以将“虚拟”行绘制为图例中的占位符,在创建图例时重新排序句柄以将文本放置在所需的位置,并相应地修改图例对象。下面是一个例子:

代码语言:javascript
复制
x = linspace(0, 2*pi, 100);
hl = plot(x, [sin(x); cos(x); tan(x); nan(size(x))].');          % Add a line of NaNs
axis([0 2*pi -4 4]);
[~, objH] = legend(hl([1 2 4 3]), 'sin', 'cos', 'junk', 'tan');  % Reorder handles
set(findobj(objH, 'Tag', 'junk'), 'Vis', 'off');           % Make "junk" lines invisible
pos = get(objH(3), 'Pos');                                 % Get text box position
set(objH(3), 'Pos', [0.1 pos(2:3)], 'String', 'also...');  % Stretch box and change text

票数 8
EN

Stack Overflow用户

发布于 2017-01-23 20:03:01

您可以使用注释。这并不完美,但只要很少调整,你就会得到你想要的。下面是一个例子:

代码语言:javascript
复制
% somthing to plot:
x = [0:0.1:5; 5:0.1:10].';
y = sin(x);
% plot the real data:
plot(x,y);
hold on
% make some space in the legend:
Spacing_lines = 3;
h = plot(nan(size(x,1),Spacing_lines));
hold off
set(h,{'Color'},{'w'}); % clear the dummy lines
% place the legend:
hl = legend([{'lable1','lable2'} repmat({''},1,Spacing_lines)]);
% add your text:
annotation('textbox',hl.Position,'String',{'Some info';'in 2 lines'},...
    'VerticalAlignment','Bottom','Edgecolor','none');

从这里你可以得到:

票数 2
EN

Stack Overflow用户

发布于 2017-01-23 10:50:02

您可以通过这样的方式将任何文本添加到任何情节点:

代码语言:javascript
复制
txt1 = 'some information';
text(x1,y1,txt1)

x1, y1坐标。

顺便说一句,text函数有很多不同的属性(颜色、字体大小、对齐等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41804400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档