我希望插入一个与图表无关的图例:
figure;
hold on;
plot(0,0,'or');
plot(0,0,'ob');
plot(0,0,'ok');
leg = legend('red','blue','black');
现在我希望将其添加到另一个数字中:
figure;
t=linspace(0,10,100);
plot(t,sin(t));
%% ADD THE LEGEND OF PLOT ABOVE
答案 0 :(得分:30)
这就是我过去解决这个问题的方法:
figure
t=linspace(0,10,100);
plot(t,sin(t));
hold on;
h = zeros(3, 1);
h(1) = plot(NaN,NaN,'or');
h(2) = plot(NaN,NaN,'ob');
h(3) = plot(NaN,NaN,'ok');
legend(h, 'red','blue','black');
这将绘制其他点,但因为坐标位于NaN
,所以它们在图表上不可见:
编辑2016年10月26日:我的原始答案导致2016b中的灰色图例条目。上面的更新代码有效,但下面的答案仅在2016b之前相关:
figure
t=linspace(0,10,100);
plot(t,sin(t));
hold on;
h = zeros(3, 1);
h(1) = plot(0,0,'or', 'visible', 'off');
h(2) = plot(0,0,'ob', 'visible', 'off');
h(3) = plot(0,0,'ok', 'visible', 'off');
legend(h, 'red','blue','black');
这将绘制附加点,但它们在图表本身上不可见。
如果您有很多元素,也可以使用copyobj
将图形元素从一个图形复制到另一个图形,然后在显示图例之前使用set(x, 'visible', 'off')
隐藏它们,但这取决于您的图形最终申请是。
答案 1 :(得分:3)
你的问题有点不清楚。但是,我在阅读时首先想到的是Matlab中的text
函数。
您可以使用text
功能将文本添加到Matlab图形中。它的用途是
>> text(x, y, str);
其中x
和y
是图中要添加文字str
的坐标。您可以使用Color
text
选项获取颜色,使用TeX绘制直线甚至_
。我对使用文字的情节非常有创意。
以下是使用legend
text
的快速而肮脏的示例
x = 0:pi/20:2*pi;
y = sin(x);
plot(x,y)
axis tight
legend('sin(x)');
text(5.7, 0.75, 'sin(x)');
text(5.1, 0.78, '_____', 'Color', 'blue');
产生
对于这种特定情况,您可以使用特定命令(在评论中注明@ Hoki)。
ht = text(5, 0.5, {'{\color{red} o } Red', '{\color{blue} o } Blue', '{\color{black} o } Black'}, 'EdgeColor', 'k');
生产
通过检索text
对象的句柄,将其复制到新的数字copyobj(ht, newfig)
变得微不足道。 [1]