使用数字句柄在MATLAB中重新创建绘图

时间:2013-08-07 16:23:46

标签: matlab graph charts

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

我的绘图代码为散点图中的每个点创建特殊符号。我想用两个子图创建一个图。我想要为轴的特定部分(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]);  

1 个答案:

答案 0 :(得分: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函数并使用它将句柄复制到图中。