MATLAB图例列出了绘图中的所有内容,包括您在绘图上添加的指南。
要解决这个问题的琐事
;with cte as
(
select SimId /* just the key column */
from dbo.sims
where ...
order by ...
offset @PageSize * (@PageNumber - 1) rows
fetch next @PageSize rows only
)
select column_list...
from dbo.sim as s
inner join cte on s.SimId = cte.SimId -- or exists
left join Agents ag ...
order by ...
option (recompile);
然而,MATLAB将最新的行放在前面,这意味着指南会覆盖显示的数据;丑陋和分散注意力。
每当你构建一个复杂的情节时都会出现类似的问题,*Plot
*Add legend
*Add guidelines
吓坏了并抓住了一切,而绘图顺序的变通方法也很难看
示例代码:
legend
(移动代码块顺序以复制上述情况)
如何合理地解决这个问题?
答案 0 :(得分:6)
如果您希望某个图形对象不生成图例(即使您再次关闭图例也会有效),您可以修改LegendInformation
:
%# plot something that shouldn't show up as legend
handleWithoutLegend = plot(something);
%# modify the LegendInformation of the Annotation-Property of the graphical object
set(get(get(handleWithoutLegend,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','off');
%# toggle legend on and off at will, and never see the something-object appear
如果您尝试关闭句柄数组上的图例,最好的方法就是循环遍历它们,使用try-wrapper来处理无法生成图例的图形对象:
for h = listOfHandles(:)'
try
set(get(get(h,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','off');
end
end
答案 1 :(得分:3)
制作您提供给%**** Optional guidelines
figure(1)
plot([2 2],[0,1],'k--'); hold on
%**** DATA
N = 4;
y=rand(5,N);
x=1:1:5;
for plotLoop=1:N;
%* Plot
figure(1)
plot(x,y(plotLoop,:));
hold on
end
%*****LEGEND
hLegend = legend(LegTxt,...
'interpreter','latex',...
'location','eastoutside')
的自定义句柄。可以连接绘图句柄以形成图例,传奇很乐意将其作为输入接受。
所需的代码并不漂亮,但确实有效。
legend
对于迂腐或好奇,循环%**** Optional guidelines for periodicity
figure(1)
plot([2 2],[0,1],'k--'); hold on
%**** DATA
N = 4;
y=rand(5,N);
x=1:1:5;
for plotLoop=1:N;
LegTxt{plotLoop} = num2str(plotLoop);
%* Plot
figure(1)
% if statement to construct a handle for the legend later
if plotLoop==1
htot=plot(x,y(plotLoop,:));
else
h=plot(x,y(plotLoop,:));
% Append this info to the figure handle
htot= [htot, h];
end
hold on
end
%*****LEGEND
hLegend = legend(htot,LegTxt,...
'interpreter','latex','FontSize',16,...
'location','eastoutside')
在这里,因为我从一些相当复杂的代码中提取了示例,其中数据是从单元格数组中提取的。显然你可以在很多使用场景中消除这个循环,我只是决定让代码保持最灵活的格式!
答案 2 :(得分:0)