5

我在散点图中发现了标记大小,并且图例在 MATLAB 2014b 中有所不同。我从早期版本的 MATLAB 中搜索并找到了一些解决方案,这些解决方案不适用于最新版本。在我当前的版本中,图例中的标记尺寸非常小,几乎无法区分。有什么帮助吗?

figure; 
hold on 
s1 = scatter(1, 1, 150, 'k', 'o') 
s2 = scatter(1, 2, 150, 'k', '+') 
s3 = scatter(2, 1, 150, 'k', 'x') 
h = legend('Circle', 'Plus', 'X', 'Location', 'NorthEast'); 
set(h, 'FontSize', 14) 
axis([0 3 0 3]) 

散点图和图例中的标记大小不同。如何增加图例条目的标记大小并使其与散点图相似。

4

1 回答 1

8

如果我理解正确,您希望访问icons调用的输出legend并修改作为MarkerSize这些图标子级的补丁对象的属性。

致电legend

[h,icons,plots,legend_text] = legend('Circle', 'Plus', 'X', 'Location', 'NorthEast'); 

icons是一个 6x1 图形数组,如下所示:

icons = 

  6x1 graphics array:

  Text     (Circle)
  Text     (Plus)
  Text     (X)
  Group    (Circle)
  Group    (Plus)
  Group    (X)

您需要的是与 a 关联的元素Group

如果您查看它们的属性(此处icons(4)),您会得到:

icons(4)

 Group (Circle) with properties:

    Children: [1x1 Patch]
     Visible: 'on'
     HitTest: 'off'

  Show all properties

所以有一个补丁对象与它关联作为它的孩子。您想使用例如修改它

icons(Some index).Children.MarkerSize

在您的情况下,您需要将对象 4 修改为 6:

for k = 4:6
icons(k).Children.MarkerSize = 20;
end

输出:

在此处输入图像描述

你当然可以自动化这个。我使用了 R2015a,所以我希望 R2014b 的行为相同。

希望这就是你的意思!

于 2015-09-18T14:45:32.210 回答