如何在MATLAB中仅显示图例

如何在MATLAB中仅显示图例,matlab,graph,charts,latex,Matlab,Graph,Charts,Latex,我只想在MATLAB中显示一组数据的图例 我之所以要这样做,是因为我想将图例导出到.eps,但我只想要图例,而不是绘图 有没有办法关闭绘图并将其从图形中删除,但仍然只显示居中的图例?我认为您需要“隐藏”绘图中不需要的元素,只保留图例。比如说, clear all; close all; figure; p1 = plot([1:10], [1:10], '+-'); hold on; p2 = plot([1:10], [1:10]+2, 'o--'); legend('text1', 'te

我只想在MATLAB中显示一组数据的图例

我之所以要这样做,是因为我想将图例导出到.eps,但我只想要图例,而不是绘图

有没有办法关闭绘图并将其从图形中删除,但仍然只显示居中的图例?

我认为您需要“隐藏”绘图中不需要的元素,只保留图例。比如说,

clear all; close all;
figure;
p1 = plot([1:10], [1:10], '+-');
hold on;
p2 = plot([1:10], [1:10]+2, 'o--');

legend('text1', 'text2');


set(p1, 'visible', 'off');
set(p2, 'visible', 'off');
set(gca, 'visible', 'off');

这似乎起到了作用:

plot(0,0,'k',0,0,'.r') %make dummy plot with the right linestyle
axis([10,11,10,11]) %move dummy points out of view
legend('black line','red dot')
axis off %hide axis

图例周围可能有很多空白。您可以尝试手动调整图例的大小,或者保存绘图并使用其他程序设置eps的边界框。

Marcin选择的解决方案不再适用于R2016b,因为MATLAB的图例将自动灰显不可见的绘图,如下所示:

关闭图例的自动更新或随后更改
TextColor
属性都不能解决此问题。要了解这一点,请尝试Marcin的修改示例:

clear all; close all;
figHandle = figure;
p1 = plot([1:10], [1:10], '+-');
hold on;
p2 = plot([1:10], [1:10]+2, 'o--');

legHandle = legend('text1', 'text2');

%turn off auto update
set(figHandle,'defaultLegendAutoUpdate','off');

set(p1, 'visible', 'off');
set(p2, 'visible', 'off');
set(gca, 'visible', 'off');

%set legend text color to black
legHandle.TextColor = [0 0 0];
结果是一样的。(为了避免将我的笔记本电脑扔出窗口)并在不缩放的情况下修复此问题,这可能会留下绘图的碎片,我编写了一个函数,修复图例并将其保存到文件(带边框):

使用提示:

  • fileType
    是为
    saveas()
    指定有效参数的字符串,例如“tif”
  • 在绘制了希望显示在图例中的所有内容后使用它,但不需要额外的内容。我不确定绘图的所有潜在元素是否都包含一个非空的
    XData
    成员
  • 添加您希望删除的其他类型的显示内容,但如果有,则不属于
    line
  • 生成的图像将包含图例、图例框以及图例周围的一点空间。图例小于最小宽度(请参见)。然而,通常情况并非如此
下面是使用上述函数的完整示例:

clear all; close all;
fig = figure;
p1 = plot([1:10], [1:10], '+-');
hold on;
p2 = plot([1:10], [1:10]+2, 'o--');

legendHandle = legend('myPrettyGraph', 'evenMoreGraphs');

saveLegendToImage(fig, legendHandle, 'testImage', 'tif');

你说得对,图例周围有很多空白。我使用Latex中的修剪功能来处理这个问题,尽管是手动的。那么如何让图例填充整个屏幕呢?
clear all; close all;
fig = figure;
p1 = plot([1:10], [1:10], '+-');
hold on;
p2 = plot([1:10], [1:10]+2, 'o--');

legendHandle = legend('myPrettyGraph', 'evenMoreGraphs');

saveLegendToImage(fig, legendHandle, 'testImage', 'tif');