メインコンテンツ

他のアプリケーションで使用するための Figure のエクスポート

ドキュメントや他のアプリケーションで使用するために Figure およびプロットをエクスポートするには、exportgraphics 関数を使用して内容をファイルに保存するか、copygraphics 関数を使用して内容をクリップボードにコピーします。どちらの関数でも、アプリケーションに適したサイズ、解像度、縦横比で Figure およびプロットを取得できます。パディングのマージンや背景色を指定したり、座標軸の目盛りの配置を制御したりすることもできます。このトピックの例では exportgraphics 関数を使用していますが、copygraphics 関数を使用する場合にも同じ概念と引数を適用できます。

exportgraphics および copygraphics 関数を使用した場合、プロットの隣にあるパネルなどの UI コンポーネントおよびコンテナーは保存される内容から除外されます。これらを含める場合は、代わりに exportapp 関数を使用します。

エクスポートするグラフィックスの指定

プロットをファイルにエクスポートするには、exportgraphics 関数を使用します。最初の引数として親 Figure を指定します。たとえば、サイズが 535×325 ピクセルの Figure を作成します。次に等高線図を作成し、Figure を PNG ファイルとしてエクスポートします。Figure を指定すると、Figure の直接の親であるすべての axes オブジェクトとその内容を取得できます。Figure に注釈が含まれている場合、exportgraphics は注釈も取得します。

f = figure;
f.Position(3:4) = [535 325];
contour(peaks)
colorbar
exportgraphics(f,"contour.png")

Contour plot exported as an image

あるいは、exportgraphics 関数の最初の引数として、Figure の代わりに axes オブジェクトを指定することもできます。この場合、Figure には axes オブジェクトが 1 つだけ含まれているため、結果のファイルは同じになります。

ax = gca;
exportgraphics(ax,"contour.png")

最初の引数として TiledChartLayout オブジェクトを渡すことで、プロットのタイル表示をエクスポートすることもできます。たとえば、2 つのプロットのタイル表示を作成し、タイル表示チャート レイアウトを PNG ファイルとしてエクスポートします。

f = figure;
f.Position(3:4) = [650 300];
t = tiledlayout(1,2);
ax1 = nexttile;
plot([4 3 2; 3 2 1],LineWidth=2)
ax2 = nexttile;
contourf(peaks)
exportgraphics(t,"twoplots.png")

Line plot and a contour plot exported together as an image

タイル表示チャート レイアウトから 1 つのプロットをエクスポートするには、nexttile 関数を使用して axes オブジェクトを取得し、それを exportgraphics 関数に渡します。たとえば、nexttile(2) は 2 番目のタイルの座標軸を返します。

ax = nexttile(2);
exportgraphics(ax,"secondplot.png")

解像度の指定

特定の解像度のイメージとしてプロットをエクスポートするには、名前と値の引数 Resolution を指定して exportgraphics 関数を使用します。イメージは既定で 150 ドット/インチ (DPI) で保存されます。

印刷出力の一般的な解像度は 300 DPI です。Web 上のグラフィックスの場合、一般的な解像度は 72 DPI です。MATLAB® が使用するのと同じ解像度を使用してプロットをエクスポートするには、グラフィックス ルート (groot) オブジェクトの ScreenPixelsPerInch プロパティの値を使用します。指定した解像度に関係なく、最終イメージのピクセル寸法は、Figure の幅と高さに解像度を乗じた結果とほぼ同じになります。たとえば、幅 4 インチのプロットを 300 DPI でエクスポートすると、幅 1,200 ピクセルのイメージになります。

たとえば、サイズが 535×325 ピクセルの Figure を作成します。次に、棒グラフを作成し、MATLAB と同じ解像度を使用してグラフをエクスポートします。

f = figure;
f.Position(3:4) = [535 325];
bar([1 11 7 8 2 2 9 3 6])
sppi = get(groot,"ScreenPixelsPerInch");
exportgraphics(f,"barchart.png",Resolution=sppi)

Bar chart exported as an image

解像度および幅と高さを指定して、特定のサイズのプロットをエクスポートできます。たとえば、次のコードは、Figure の内容を 300 DPI、1 辺 3 インチの正方形 (つまり、1 辺 900 ピクセルの正方形) のイメージとして保存します。幅と高さの指定の詳細については、以降のセクションで説明します。

exportgraphics(gcf,"bar-3inch-300dpi.png",Units="inches", ...
       Width=3,Height=3,Resolution=300)

サイズの指定

exportgraphics 関数には、プロットをエクスポートするときに寸法と縦横比を制御できる 4 つの名前と値の引数 (WidthHeightUnits、および PreserveAspectRatio) があります。

出力ファイルのサイズを制御する簡単な方法として、名前と値の引数 Width または Height のいずれかを使用して、1 つの寸法の長さを指定できます。MATLAB は、指定しなかった方の寸法を調整して、元の縦横比を維持します。Width または Height の値を指定する場合は、名前と値の引数 Units を指定します。

サイズを指定した場合は、Figure の幅と高さがエクスポートされたファイルの希望する幅と高さと同じようになるように、Figure の Position プロパティも調整します。Position プロパティは、4 要素のベクトルです。幅と高さの値は、ベクトルの最後の 2 つの要素です (既定ではピクセル単位)。この調整は、exportgraphics を呼び出す前に行います。

たとえば、サイズが 535×325 ピクセルの Figure を作成します。棒グラフを作成し、幅約 500 ピクセルの PNG ファイルとして保存します。MATLAB は、元の縦横比を維持するために、高さを 334 ピクセルに調整します。既定では、内容は座標軸に沿ってぴったりトリミングされます。イメージ周囲のグレーの境界線が取得領域の輪郭です。境界線は保存されるイメージの一部ではありません。

f = figure;
f.Position(3:4) = [535 325];
bar([1 11 7 8 2 2 9 3 6])
exportgraphics(f,"bar500.png",Units="pixels",Width=500)

Bar chart exported as a 500-pixel-wide image

WidthHeight の両方の値を指定することもできます。次のコードは縦横比を変更して、ぴったりトリミングされた正方形のイメージを作成します。

exportgraphics(f,"barsquare.png", ...
        Units="pixels",Width=400,Height=400)

Bar chart exported as a 400-pixel-square image

グラフの元の縦横比を維持する場合は、名前と値の引数 PreserveAspectRatio"on" として指定します。このコードは、棒グラフの元の縦横比を維持するためにパディングを含む正方形のイメージを作成します。

exportgraphics(f,"barsquare-padded.png", ...
        Units="pixels",Width=400,Height=400,PreserveAspectRatio="on")

Bar chart exported as a 400-pixel-square image with padding to preserve the original aspect ratio of the chart

イメージ ファイルをエクスポートし、インチやセンチメートルなどのピクセル以外の単位を使用して幅または高さを指定する場合は、必ず名前と値の引数 Resolution を指定してください。そうしないと、出力の既定の解像度は 150 DPI になり、アプリケーションに必要なサイズと異なるサイズになる可能性があります。

たとえば、棒グラフを作成し、MATLAB と同じ解像度を使用して 1 辺 3 インチの正方形のイメージとして保存します。

f = figure;
f.Position(3:4) = [300 300];
bar([1 11 7 8 2 2 9 3 6])
sppi = get(groot,"ScreenPixelsPerInch");
exportgraphics(f,"bar3inchsquare.png", ...
        Units="inches",Width=3,Height=3, ...
        Resolution=sppi)

Bar chart exported as a 3-inch-square image

サイズを制御する別の方法として、内容をベクトル グラフィックス ファイルとして保存する方法があります。その後、最終的なアプリケーションで内容のサイズを変更できます。内容をベクトル グラフィックス ファイルとして保存するには、名前と値の引数 ContentType"vector" として指定して exportgraphics 関数を使用します。たとえば、棒グラフを作成し、その Figure をベクトル グラフィックスを含む PDF フラグメントとして保存します。すべてのフォントが PDF ファイルに含まれます。出力ファイルは次のイメージのようになります。

f = figure;
f.Position(3:4) = [535 325];
bar([1 11 7 8 2 2 9 3 6])
exportgraphics(f,"bar.pdf",ContentType="vector")

Bar chart exported as a PDF file

Figure を SVG ファイルとしてエクスポートすることもできます。SVG ファイルには常にベクトル グラフィックスが含まれるため、ContentType 値を指定する必要はありません。

exportgraphics(f,"bar.svg")

パディングの指定

名前と値の引数 Padding を指定して exportgraphics を使用することで、エクスポートされたプロットの周囲のパディングの量を制御できます。既定では、Padding の値は "tight" です。この値により、パディングが最小化されます (PreserveAspectRatio の値を "on" にして Width および Height の値を指定した場合を除く)。

たとえば、ライン プロットを作成し、既定のパディングを使用して 400×300 ピクセルの JPG ファイルとしてエクスポートします。イメージ周囲のグレーの境界線が取得領域の輪郭です。境界線は保存されるイメージの一部ではありません。

f = figure;
f.Position(3:4) = [400 300];
plot([4 3 2 1; 3 2 1 4],LineWidth=2)
exportgraphics(f,"plot-tight-padding.jpg", ...
       Units="pixels",Width=400,Height=300)

Line plot exported as an image with the default "tight" padding

Figure に表示されているのと同じパディングを使用するには、名前と値の引数 Padding"figure" として指定します。指定する寸法にはパディングが含まれます。したがって、エクスポートされたプロットは、追加のパディングに対応するためにわずかに小さくなります。

exportgraphics(f,"plot-figure-padding.jpg", ...
       Units="pixels",Width=400,Height=300, ...
       Padding="figure")

Line plot exported with the same padding as the figure

カスタム パディング値を指定するには、名前と値の引数 Padding を、Width および Height の値と同じ単位の数値として指定します。この場合、プロットの各辺に 10 ピクセルを追加します。

exportgraphics(f,"plot-10px-padding.jpg", ...
       Units="pixels",Width=400,Height=300, ...
       Padding=10)

Line plot exported with 10 pixels of padding on each side

背景色の指定

既定では、exportgraphics 関数は、Figure のテーマに対応する背景色を使用して内容を保存します。名前と値の引数 BackgroundColor を次のいずれかの値に設定することで、異なる背景を指定できます。

  • "current" — 座標軸の親コンテナー (Figure、パネルなど) の色に応じて色を選択します。Figure のテーマがライト テーマの場合、背景色は白になります。ダーク テーマの場合、背景色は濃いグレー (ほぼ黒) になります。親コンテナーにカスタム カラーが設定されている場合、背景色はそのカスタム カラーに一致します。

  • "none" — 背景色は、ContentType の値に応じて、透明、白、または濃いグレー (ほぼ黒) に設定されます。

    • ContentType="vector" の場合、背景色は透明です。

    • ContentType="image" の場合、ライト テーマの Figure の背景色は白、ダーク テーマの Figure の背景色は濃いグレー (ほぼ黒) になります。

  • カスタム色。RGB 3 成分 ([1 0 0] など)、16 進数カラー コード ("#FF0000" など)、または色名 ("red" など) として指定します。

たとえば、ステム プロットを作成し、その Figure を透明な背景をもつ PDF ファイルとして保存します。

f = figure;
f.Position(3:4) = [400 300];
stem(1:10,"filled",LineWidth=2)
ylim padded
exportgraphics(f,"stem-transparent.pdf",ContentType="vector",...
               BackgroundColor="none")

Stem plot exported as a PDF file

座標軸の範囲と目盛り値の保持

場合によっては、exportgraphics 関数は、出力のフォント サイズと縦横比に応じて、異なる座標軸の範囲または目盛り値を使用して内容を取得することがあります。座標軸の範囲と目盛り値が変更されないようにするには、座標軸の目盛り値モードおよび範囲モードのプロパティを "manual" に設定します。たとえば、直交座標軸にプロットする場合は、XTickModeYTickModeZTickModeXLimModeYLimMode、および ZLimMode の各プロパティを "manual" に設定します。

たとえば、次のコードではプロットを作成し、モード プロパティを "manual" に設定します。次に、大幅に異なる縦横比を使用してプロットをエクスポートします。座標軸の範囲と目盛り値は、出力ファイルで保持されます。

f = figure;
f.Position(3:4) = [400 300];
plot([4 3 2 1; 3 2 1 4],LineWidth=2)

% Set the mode properties of the axes
ax = gca; 
ax.XTickMode = "manual";
ax.YTickMode = "manual";
ax.ZTickMode = "manual";
ax.XLimMode = "manual";
ax.YLimMode = "manual";
ax.ZLimMode = "manual";

exportgraphics(f,"eplot-preserveticks.png", ...
       Units="pixels",Width=200,Height=400)

Line plot that is twice as tall as it is wide exported as an image

極座標プロットの場合は、極座標軸の RTickModeThetaTickModeRLimModeThetaLimMode の各プロパティを "manual" に設定します。

参考

関数

プロパティ

トピック