我正在尝试在matlab图形中创建一个占用更少空间,特别是垂直尺寸的图例。理想情况下,如果我可以改变图例的行间距,这可以解决它,但我似乎找不到办法。
我在Mathworks问题和Google中搜索过。我甚至试图从头开始“写”传说,但是当我尝试导出到eps时它不起作用。
有没有办法控制Matlab图例中的行间距?可能没有文件的东西?
答案 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。