既存の複数のグラフを1つのグラフにまとめる

145 views (last 30 days)
Saito
Saito on 29 Dec 2019
Commented: Kenta on 5 Jan 2020
同じ様式で異なった数値に対して作成した図が9種類保存してあります。これをfigure 1-9として1つにまとめるにはどうしたら良いでしょうか?subplotは現在進行形で作成しているデータのみがサブプロットされるので使えませんでした。
  1 Comment
Kenta
Kenta on 31 Dec 2019
こんにちは、そのデータやコードを添付していただけませんか?subplotでもできそうな気がします。

Sign in to comment.

Accepted Answer

Kenta
Kenta on 1 Jan 2020
figure
for i=1:size(x1,1)
subplot(3,2,i)
bar(x1(i,:),y1(i,:));hold on
end
こんにちは、データを添付していただきありがとうございます。
info=struct2table(dir);
name={info.name};
figure;
for i=3:numel(name{1})
hfig = open('LT12202019002 Ch02 unit a ftr1.fig');hold off
x1(i-2,:) = hfig.Children.Children.XData;
y1(i-2,:) = hfig.Children.Children.YData;
end
figファイルの添付で、データが直接受け取れなかったので、下のほうのコードでデータを取得しています。
上のコードでは、barの後のコマンドが、Saitoさまのものとは異なると思いますが、適宜、変更をお願いします。
複数のプロットはhold onとすれば、前のプロット情報を保持しながら、さらに新たなプロットを作ることができます。
さらに余白をちいさくしたい、などがあれば、このMatlab Answersの検索欄から、キーワード検索すれば出るので、いろいろとカスタマイズしてもらえると幸いです。
result.JPG

More Answers (2)

Saito
Saito on 31 Dec 2019

Saito
Saito on 4 Jan 2020
有難うございます。図を作成することが出来ました。ただ、まだループの使い方がまだ良くわからず、添付したscriptの構文を作りました。これをループによって単純に出来ないでしょうか?
  1 Comment
Kenta
Kenta on 5 Jan 2020
for i=1:(グラフの数)
subplot(9,1,1)
bar(x1(1,:),y1(1,:));%x1の部分を適宜変更する
hold on
xlim([-250 800]);
xticks(-2500:100:800);
ylim([0 100]);
yticks(0:50:100);
end
上のように、グラフの数だけfor文で繰り返せばいいと思います。
今回は、質問者さまが、生データではなく、figファイルを添付されていたので、figファイルから生データの値を取り出すために関数openで図を開いてから棒グラフの値を取得しています。実際は、何かしらの変数やセンサーデータなどから値を取得しているはずで、x1の代わりにそちらの変数に書き換えていただければと存じます。

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!