在matlab数字中压缩大小或减少图例的行间距

时间:2013-11-29 04:43:20

标签: matlab plot legend matlab-figure

我正在尝试在matlab图形中创建一个占用更少空间,特别是垂直尺寸的图例。理想情况下,如果我可以改变图例的行间距,这可以解决它,但我似乎找不到办法。

我在Mathworks问题和Google中搜索过。我甚至试图从头开始“写”传说,但是当我尝试导出到eps时它不起作用。

有没有办法控制Matlab图例中的行间距?可能没有文件的东西?

1 个答案:

答案 0 :(得分:1)

一种方法是调整图例的宽高比:

set(h,'PlotBoxAspectRatioMode','manual');
set(h,'PlotBoxAspectRatio',[1 0.8 1]);

(默认为[1 1 1])。

您还可以使用各种图例元素的精确定位。如果h是您的图例的句柄:

hc = get(h,'Children');

现在,hc的长度是图例中项目数的3倍。

hc(1)是标记,hc(2)是行,hc(3)是文本。

(等等后续项目)。

hc(1)将有一个条目YData(垂直位置,单个值),hc(2)也有YData(垂直位置 - 两个相同值的向量),以及{ {1}}包含hc(3) - Position向量。所有这三个的Y值应该相同。

获取y位置:

[x y z]

假设您的图例没有任何超过一行的文字,yd = zeros(length(hc)/3,1); for n = 1:length(yd); yd(n) = get(hc(1+(n-1)*3),'YData'); end 应该是均匀间隔的步骤。定义您选择的新间距yd

设置新职位:

yd2

问题 - 这会移动所有文字和标记,但不会更改边框。如果尝试进行微调,最简单的方法是先定义图例的最终大小/位置,然后重新定位/调整元素的大小。

另外,您可能会发现在写出图像时,MATLAB有助于重新绘制图像,重置您的调整。有关该信息,请参阅未记录的MATLAB上的this blog post