【问题标题】:include legend in matlab compass plot在 matlab 罗盘图中包含图例
【发布时间】:2015-06-14 09:53:24
【问题描述】:

我在 matlab 中使用指南针命令来绘制风速和风向。我想将默认版本更改为(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 的箭头的长度。关于如何做到这一点的任何想法?

【问题讨论】:

  • 所以您希望图例包含一个长度为 2 的箭头或带文本的线条,对吗?你用什么 Matlab 版本?
  • 我使用 R2013a。对,那是正确的。在罗盘图之外,我想要一条等于 2 大小的线(在罗盘图中)。类似于地图中的比例尺,但带有一条线(不是箭头)。我没有指定箭头,因为我正在考虑删除箭头并插入线条。

标签: matlab


【解决方案1】:

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

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')

我经常使用 compass(),但实际上我不太确定标签的字体大小是否为 10,在我的(许多)指南针图中,我使用它作为参数并且效果很好。如果没有,只需使用参数 text 即可,findobj() 也将获取图中的所有文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多