How do I fix my legend?
2 次查看(过去 30 天)
显示 更早的评论
Hello,
'parnam' contains 8 1x1 structures (data and text). The data contains the latitude, longitude and altitude of a sensor. I want to create a legend for my plot that states the latitude of each plot, but it only prints the first.
figure
for k=1:m
scatter(x(:,k),y(:,k)), hold on
legend(sprintf('aircraft at %2.2f degrees latitude', parnam{1,k}.data(1,1)))
end
hold off
0 个评论
采纳的回答
dpb
2017-5-16
There's only one legend per plot; you're overwriting each pass thru the loop.
for k=1:m
scatter(x(:,k),y(:,k))
if k==1, hold on, end % can't get an "onner"
end
legend(num2str(parnam{1,1:m}.data(1,1)).','aircraft at %2.2f degrees latitude')
3 个评论
Walter Roberson
2017-5-16
legend( cellstr( num2str( cellfun( @(C) C.data(1,1), parnam(1,1:m) ) .', 'aircraft at %2.2f degrees latitude' ) ) )
Walter Roberson
2017-5-16
Alex, your version will not work if some of the data values have a different number of digits, such as 3.7 degrees or 13.7 degrees. But you could use
figure
for k=1:m
scatter(x(:,k),y(:,k)), hold on
h{k} = sprintf('aircraft at %2.2f degrees latitude', parnam{1,k}.data(1,1)) ;
end
legend(h)
hold off
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Legend 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!