matlab更改legend中marker的大小
Ps:更简单的方式
可以手动添加一组自定义的数据(X, Y),把这组数据的X或Y坐标与自己的数据错开。通过句柄对随便添加的自定义的数据设置markersize。然后通过xlim或ylim把手动添加的点遮掉即可。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
添加legend:
h = legend('C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'Orientation', 'horizontal'); legendmarkeradjust(12, 'horizontal')
调用legendmarkeradjust(varargin)函数,第一个参数为Markersize尺寸,第二个参数为legend的方向
legendmarkeradjust函数定义如下:
function legendmarkeradjust(varargin) a1=ver('matlab'); rls=a1.Release; rlsnumber=str2num(rls(5:6)); if rlsnumber>=14 && ~strcmp(a1.Release,'(R2014a') leg=get(legend); legfontsize=leg.FontSize; legstrings=leg.String; legloc=leg.Location; delete(legend) [l1,l2,l3,l4]=legend(legstrings, 'Orientation', varargin{2}); for n=1:length(l2) if sum(strcmp(properties(l2(n)),'MarkerSize')) l2(n).MarkerSize=varargin{1}; elseif sum(strcmp(properties(l2(n).Children),'MarkerSize')) l2(n).Children.MarkerSize=varargin{1}; end end for n=1:length(l2) if sum(strcmp(properties(l2(n)),'FontSize')) l2(n).FontSize=legfontsize; elseif sum(strcmp(properties(l2(n).Children),'FontSize')) l2(n).Children.FontSize=varargin{1}; end end set(l1,'location',legloc) else s=get(legend); s1=s.Children; s2=[]; s2=findobj(s1,{'type','patch','-or','type','line'}); switch length(varargin) case 1 marksize=varargin{1}; for m=1:length(s2) set(s2(m),'markersize',marksize); end case 2 marksize=varargin{1}; lwidth=varargin{2}; for m=1:length(s2) set(s2(m),'markersize',marksize,'linewidth',lwidth); end end end
参考:
https://www.ilovematlab.cn/thread-583495-1-1.html
快去成为你想要的样子!