I have five figure in .Fig extension which i am creating after plotting 5 rows from a dataset. Now i want to Join these 5 figure into one figure in vertical allignemnt
1 回表示 (過去 30 日間)
古いコメントを表示
<<
>>
<<
>>
採用された回答
Walter Roberson
2016 年 3 月 7 日
for each .fig, use openfig() to open the figure and return a handle to it. For each of those handles, h(K)
h_line = findobj(h(K), 'type', 'line');
line_ax = ancestor(h_line, 'axes');
title_obj = get(line_ax, 'title');
titles{K} = get(title_obj, 'string');
xlab{K} = get(line_ax, 'xlabel');
ylab{K} = get(line_ax, 'ylabel');
xdata{K} = get(h_line, 'xdata');
ydata{K} = get(h_line, 'ydata');
Once you have all of those, you can create a new figure and
for K = 1 : 5
ax = subplot(5,1,K);
plot(xdata{K}, ydata{K});
title(titles{K});
xlabel(xlab{K});
ylabel(ylab{K});
end
You can extend this if you need the tick marks to be specifically copied instead of automatically generated, or need special font, and so on.
2 件のコメント
Walter Roberson
2016 年 3 月 8 日
figfiles = {'1st electrode', '2nd electrode', '3rd electrode', '4th electrode', '5th electrode'};
for K = 1 : 5
h(K) = openfig( [figfiles{K} '.fig']);
h_line = findobj(h(K), 'type', 'line');
xdata{K} = get(h_line, 'xdata');
ydata{K} = get(h_line, 'ydata');
end
newfig = figure();
newax = axes('Parent', newfig);
xycell = [xdata(:), ydata(:)].';
line_handles = plot(xycell{:});
legend( line_handles, figfiles );
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!