ライブスクリプトで一​度生成したプロットを​再度プロットする方法

4 views (last 30 days)
Yuki Koyama
Yuki Koyama on 13 May 2020
Commented: Shunichi Kusano on 18 May 2020
たとえば,
fig=plot(1:10)
とプロットすればライブスクリプト上でプロットされます.(figに代入する必要はないですが)
ここで同じものをもう一度プロットする最も単純な方法はもう一度同じコードを入力することですが,
これよりコードの多い複雑なプロットの場合,コードの幅を取るので美しくありません.
たとえばここで変数figを用いて再度プロットできないでしょうか?
figにはプロットのためのデータが揃っているためできると考えたのですが,実際に行う方法が見つかりませんでした.
あるいは,figを用いて簡単に再度プロットできないとしたら,他に簡単な方法があれば教えて頂きたいです.

Answers (1)

Shunichi Kusano
Shunichi Kusano on 13 May 2020
copyobj関数が使えそうです。
  2 Comments
Yuki Koyama
Yuki Koyama on 14 May 2020
参照していただいたドキュメンテーションのように,追加のコードを設定しなければ,figureを再生成することは今の所できないということでしょうか?
Shunichi Kusano
Shunichi Kusano on 18 May 2020
返事が遅くなりすみません。
追加のコードは必要になるかと思います。ご参考までに下記にサンプルコードを載せます。
close all
%% コピー元となるグラフィックオブジェクトの作成
fig = figure;
plot(1:300,[1:300]*0.01); % オブジェクト1
hold on;
plot(1:300,sin([1:300]*0.1),'r.'); % オブジェクト2
%% 新しいfigureにコピーして表示
ax = gca; % コピー元のaxis
newfig = figure; % コピー先のfigureウィンドウ
new_ax = axes; % コピー先のaxis
for i = 1:numel(ax.Children)
copyobj(ax.Children(i), new_ax); % コピー
end

Sign in to comment.

Tags

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!