现在,hc的长度将是图例中项目数的3倍。 hc(1)是标记,hc(2)是行,hc(3)是文本。 (and对于后续项目)。 hc(1)将有一个条目YData(垂直位置,单个值),hc(2)也有YData(垂直位置-两个相同值的向量),hc(3)包含Position-[x y z]向量。所有这三个的Y值应该是相同的。
获取y位置:
yd = zeros(length(hc)/3,1);
for n = 1:length(yd);
yd(n) = get(hc(1+(n-1)*3),'YData');
end
假设您的图例没有任何超过一行的文本,yd应该是均匀间隔的步长。定义您选择的新间距yd2。
设置新位置:
% markers
for n = 1:length(yd2)
set(hc(1+(n-1)*3),'YData',yd2(n));
end
% lines
for n = 1:3
set(hc(2+(n-1)*3),'YData',[yd2(n),yd2(n)]);
end
% text
for n = 1:3;
pos = get(hc(3+(n-1)*3),'Position');
pos(2) = yd(n);
set(hc(3+(n-1)*3),'Position',pos);
end
1条答案
按热度按时间3phpmpom1#
一种方法是调整图例的纵横比:
(默认值为[1 1 1])。
您还可以使用各种图例元素的精确定位。如果h是图例的句柄:
现在,hc的长度将是图例中项目数的3倍。
hc(1)
是标记,hc(2)
是行,hc(3)
是文本。(and对于后续项目)。
hc(1)
将有一个条目YData
(垂直位置,单个值),hc(2)
也有YData
(垂直位置-两个相同值的向量),hc(3)
包含Position
-[x y z]
向量。所有这三个的Y值应该是相同的。获取y位置:
假设您的图例没有任何超过一行的文本,
yd
应该是均匀间隔的步长。定义您选择的新间距yd2
。设置新位置:
问题-这会移动所有文本和标记,但不会更改边框。如果试图进行微调,最简单的方法是首先定义图例的最终大小/位置,然后重新定位/调整元素的大小。
此外,您可能会发现,当写出图像时,MATLAB可以帮助您重新绘制图像,重置您的调整。请参阅未记录的MATLAB上的this blog post以了解有关信息。