我试图在不同的子图中绘制图像。基本的想法是使用annotation
,感谢this question on SO。
这是Mathworks File Exchange上的一个脚本,但它不适用于现代版本的MATLAB,而不适用于axis image
。
答案 0 :(得分:0)
我自己找到了答案。
请参阅this file on Mathworks file exchange。
它要求进行许多令人讨厌的棘手计算和转换。由BenoîtValley提供
首先,获取图的配置,
% get axes properties
funit=get(get(h_axes,'Parent'),'Units');
% get axes properties
aunit=get(h_axes,'Units');
darm=get(h_axes,'DataAspectRatioMode');
pbarm=get(h_axes,'PlotBoxAspectRatioMode');
dar=get(h_axes,'DataAspectRatio');
pbar=get(h_axes,'PlotBoxAspectRatio');
xlm=get(h_axes,'XLimMode');
ylm=get(h_axes,'YLimMode');
xd=get(h_axes,'XDir');
yd=get(h_axes,'YDir');
% set the right units for h_axes
set(h_axes,'Units',funit);
axesoffsets = get(h_axes,'Position');
x_axislimits = get(h_axes, 'xlim'); %get axes extremeties.
y_axislimits = get(h_axes, 'ylim'); %get axes extremeties.
x_axislength = x_axislimits(2) - x_axislimits(1); %get axes length
y_axislength = y_axislimits(2) - y_axislimits(1); %get axes length
最后
xfigure = xab+xwb*(xaxes-x_axislimits(1))/x_axislength;
Generate code
给了我这样的东西:
% Create line
annotation(figure1,'line',[0.223214285714286 0.694642857142857],...
[0.552380952380952 0.630952380952381]);
与现有的线,点或数字无关,更不用说未绘制的变量。所以基本上我正在寻找方法来获得annotation
坐标中的那些点位置,这在上面的代码中处理。
如果我没有让你们知道如何使用generate code
,请告诉我们。