从.fig文件增加散点图标记大小

时间:2012-05-12 03:16:33

标签: matlab resize command scatter-plot

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

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

感谢。

2 个答案:

答案 0 :(得分:6)

您需要获取散点组对象的句柄以更改标记属性。正如Jonas在评论中提出的那样,你可以通过

轻松搞定
   % get handle to scattergroup object
   h = gco;

由于散子组是轴的子节点,您也可以通过

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

如果图像包含多个图形对象(例如,附加行),则命令findall可能有帮助(同样是Jonas的建议)。使用此命令,您可以搜索具有特定属性的图形对象的句柄:

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

当您拥有散子组的句柄时,可以通过

更改标记的属性
% change size of markers 
set(h, 'sizedata', 50)

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

get(h)

或显示属性的GUI使用

inspect(h)

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

答案 1 :(得分: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财产的句柄,我会欢迎。