包括matlab指南针图中的传奇

时间:2015-04-09 06:47:15

标签: matlab

我在matlab中使用compass命令绘制风速和方向。我想将默认版本更改为(1)删除指南针内的标签,以及(2)在指南针图表外绘制图例以显示每个箭头的大小。

具体来说,使用指南针是否可以包含描述箭头大小的图例而不是图中定义的值?例如:

rng(0,'twister') % initialize random number generator
M = randn(20,20);
Z = eig(M);

figure
compass(Z)

这是一个正常的罗盘图,每个条目的大小由图中的标签显示,这里它们是1:5。我可以删除标签:

h = findall(gca,'type','text'); % Find all handles to text labels
legit = {'0','30','60','90','120','150','180','210','240','270','300','330','360',''}; % Define what to keep
idx = ~ismember(get(h,'string'),legit); % Take the others and set them to empty string
set(h(idx),'string',''); 

但是,我现在想要包含一个图例来说明一个大小为2的箭头的长度。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:0)

在创建数据之后尝试一些版本:

u=abs(Z)
figure(1)
compass(Z)
set(findobj(gcf,'type','text','-and','fontsize',10),'string','')
legend({['z_1 = ',num2str(u(1)),' units'],...
        ['z_2 = ',num2str(u(2)),' units']},...
     'location','southoutside')

我经常使用指南针(),但实际上我并不确定标签的字体大小是10,在我的(很多)指南针图中我使用它作为参数并且它工作正常。如果它不是,只需使用参数文本,findobj()也将获得图中的所有文本。