我自己找到答案。
请参阅this file on Mathworks file exchange。
它需要大量棘手的计算和转换。由 Benoît Valley 提供
首先,获取图形的配置,
% 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,请告诉我。