1

无论如何通过将其保存到某种类型的轴句柄来创建相同的图两次?

我的绘图代码为散点图中的每个点创建特殊符号。我想创建一个带有两个子图的图形。我想为轴的特定部分(0 到 10)设置第一个图,我想从(90:100)开始的第二个图。我知道我可以通过复制和粘贴代码来重新创建情节,但是如果我更改情节的其他内容,这似乎很麻烦并且管理起来很麻烦。

无论如何,我可以只创建一次情节,将其保存到句柄然后重新绘制吗?

这基本上是我正在寻找的功能:

figure;
hold on;
x = [1  10 20 10   2000 3000];
y = [10 30 40 20   100   200 ];

// Create plot one point at a time     
for i = 1:4
subplot(2,1,1); plot(x(i),y(i),'r');

// REDACTED CODE
// There is a bunch of code here to adjust the look of the first plot for each point
// In order to define the look of each marker in a scatter plot, 
// this has to be done one point at a time
// REDACTED CODE

end

// Adjust axis
axis([1 60 0 50]);

// Get figure handle
handle = gcf;


// Create second plot with same characteristics as first plot but with different axis boundaries
subplot(2,1,2); plot(handle);
axis([90 250 1000 4000]);  
4

1 回答 1

0

以下是如何将该代码转换为函数的方法:

function makeAPlot(axBound, ax)
% set current axis
axes(ax)

hold on;
x = [1  10 20 10   2000 3000];
y = [10 30 40 20   100   200 ];

for i = 1:4
 plot(x(i),y(i),'r');

% // REDACTED CODE
% // There is a bunch of code here to adjust the look of the first plot for each point
% // In order to define the look of each marker in a scatter plot,
% // this has to be done one point at a time
% // REDACTED CODE

end

axis(axBound)

以下是如何使用不同的参数调用它两次,以将其绘制在具有不同轴范围的不同子图中:

ax1 = subplot(2,1,1);
makeAPlot([1 60 0 50], ax1)

ax2 = subplot(2,1,2);
makeAPlot([90 250 1000 4000], ax2)

如果这不起作用,您可以查看该copyobj函数并使用它将句柄复制到绘图。

于 2013-08-07T16:59:15.333 回答