3

我有一个图形文件(scatter.fig)。该图有许多使用 scatter() 的散点绘图仪。现在我只有这个无花果文件,我需要增加所有散点的标记大小。手动尝试过,但非常困难。有没有办法我可以做类似 H=figurehandle() s= points(h) set(s,'markersize');

我只是无法弄清楚确切的命令。

谢谢。

4

2 回答 2

6

您需要获取 scattergroup 对象的句柄才能更改标记属性。正如乔纳斯在评论中提出的那样,您可以通过以下方式轻松获得它

   % get handle to scattergroup object
   h = gco;

由于分散组是轴的孩子,你也可以得到它

% get handle to scattergroup object
h = get(gca,'children');

如果图像包含多个图形对象(例如,附加的线条),则该命令findall可能会有所帮助(再次由 Jonas 提出)。使用此命令,您可以搜索具有特定属性的图形对象的句柄:

h = findall(gca,'marker','o')

当您拥有 scattergroup 的句柄时,您可以通过以下方式更改标记的属性

% change size of markers 
set(h, 'sizedata', 50)

要查看可以更改的 scattergroup 属性的完整列表,请使用

get(h)

或用于显示属性的 GUI 使用

inspect(h)

如果您只想编辑单个绘图(即不需要脚本),您可以通过单击工具栏上的鼠标按钮然后单击绘图中的一个标记来编辑实际图形(再次由 Jonas 建议)。然后右键单击标记,选择“属性”,然后按下“更多属性”按钮。在打开的 UI 中,您将条目“sizeData”更改为您选择的值。

于 2012-05-12T11:45:56.310 回答
2

编辑:1 如果XY数据不可用

我试图找到 的句柄markersize,但我找不到。所以,我设计了另一种方法。如果我们有图形文件,那么我们可以直接从图形中获取XY数据,并使用scatter新的标记大小重新绘制图形。这是下面的代码。

clear all
X=rand(100,1);
Y=rand(100,1);
scatter(X,Y,10) 
saveas(gcf,'SO_scatterQ.fig')
clear all
close all
%%%%%% THE CODE ABOVE JUST GENERATES A SCATTER .fig FILE WITH BLACKBOX PROPERTIES %%%%%
openfig('SO_scatterQ.fig')
Xdata_retrieved = get(get(gca,'Children'),'XData');
Ydata_retrieved = get(get(gca,'Children'),'YData');
scatter(Xdata_retrieved,Ydata_retrieved,20) % You can use any other marker size you wish to use

虽然,如果有人发布答案以直接获取该markersize物业的句柄,我将欢迎。

于 2012-05-12T04:38:58.300 回答