パワーポイントへのfigureの貼り付け
117 ビュー (過去 30 日間)
古いコメントを表示
既存のパワーポイント資料へ、既存のスライドを指定してMATLABで書いたグラフ(figure)を貼り付けたいです。
どのようにすれば良いですか?
0 件のコメント
回答 (3 件)
michio
2020 年 4 月 23 日
ちょうど Qiita に情報をまとめていたのでご紹介します。
MATLAB Report Generator があるとある程度シンプルに実現できます
0 件のコメント
Kenta
2020 年 4 月 23 日
こんにちは、関数printでできます。例えば、
clear;close all;clc
a=randn(100,4);
figure;boxplot(a)
print -clipboard -dmeta
とすれば、クリップボードに箱ひげ図が保存されていると思います。それをパワーポイントの画面で、ctrl+Vで張り付ければ良いです。
I=getframe(gcf);
imwrite(I.cdata,'boxplot.jpg')
ただ、パワーポイントに全ての図を張り付けるのではなく、最終的に好みの図のみを張り付ける状況もあるかと思います。
その場合は上のように、getframe関数で、figureの絵を取り出し、それをimwrite関数で画像として保存するのも良いかもしれません。ループごとにちがう名前で保存する場合は、sprintfなどを使って、ループでちがう名前を付けて、上書きされないようにすることが必要です。
また、getframeは他の場面でもいろいろと使えて汎用性が高い一方、2行書くので面倒かもしれません。その場合は下のように書けば1行で書けます。詳しくは下のURLをご参照ください。
print('boxplot2','-dpng')
2 件のコメント
Kojiro Saito
2020 年 4 月 23 日
Windows限定の方法になりますが、MATLAB本体の機能のCOM(actxserver)でできます。
例えば、以下のサンプルでは、カレントフォルダーにあるtest.pptxを開いて、スライド2の中心にFigureを貼り付けることができます。
% COMでパワポを起動
h = actxserver('PowerPoint.Application');
% test.pptxを開く
Presentation = h.Presentation.Open([pwd, filesep, 'test.pptx']);
% Figureを作成し、PNG画像で保存
figure;
plot(1:10)
figFile = [pwd filesep 'test1.png'];
print('-dpng','-r150', figFile)
% パワポのスライドの2ページ目を選択する
Slide1 = Presentation.Slides(1);
slideItem = Slide1.Item(2);
% スライドの幅と高さを取得する
slideWidth = Presentation.PageSetup.SlideWidth;
slideHeight = Presentation.PageSetup.SlideHeight;
% スライド2の中心に、Figureの画像を挿入する
imgWidth = 500; % 画像の横幅
imgHeight = 500; % 画像の高さ
Image1 = slideItem.Shapes.AddPicture(figFile, 'msoFalse', 'msoTrue', ...
slideWidth/2-imgWidth/2, slideHeight/2-imgHeight/2, imgWidth, imgHeight);
% パワポを同名で保存する
Presentation.Save
% COMのパワポを終了する
pause(1) %すぐに終了すると保存エラーが発生するので、1秒待たせています
h.Quit
h.delete
COMで操作できるパワポのオブジェクトは、下記のMicrosoftのドキュメントが参考になります。
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で MATLAB Report Generator についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!