他のアプリケーションで使用するための 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")
あるいは、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")
タイル表示チャート レイアウトから 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)
解像度および幅と高さを指定して、特定のサイズのプロットをエクスポートできます。たとえば、次のコードは、Figure の内容を 300 DPI、1 辺 3 インチの正方形 (つまり、1 辺 900 ピクセルの正方形) のイメージとして保存します。幅と高さの指定の詳細については、以降のセクションで説明します。
exportgraphics(gcf,"bar-3inch-300dpi.png",Units="inches", ... Width=3,Height=3,Resolution=300)
サイズの指定
exportgraphics
関数には、プロットをエクスポートするときに寸法と縦横比を制御できる 4 つの名前と値の引数 (Width
、Height
、Units
、および 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)
Width
と Height
の両方の値を指定することもできます。次のコードは縦横比を変更して、ぴったりトリミングされた正方形のイメージを作成します。
exportgraphics(f,"barsquare.png", ... Units="pixels",Width=400,Height=400)
グラフの元の縦横比を維持する場合は、名前と値の引数 PreserveAspectRatio
を "on"
として指定します。このコードは、棒グラフの元の縦横比を維持するためにパディングを含む正方形のイメージを作成します。
exportgraphics(f,"barsquare-padded.png", ... Units="pixels",Width=400,Height=400,PreserveAspectRatio="on")
イメージ ファイルをエクスポートし、インチやセンチメートルなどのピクセル以外の単位を使用して幅または高さを指定する場合は、必ず名前と値の引数 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)
サイズを制御する別の方法として、内容をベクトル グラフィックス ファイルとして保存する方法があります。その後、最終的なアプリケーションで内容のサイズを変更できます。内容をベクトル グラフィックス ファイルとして保存するには、名前と値の引数 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")
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)
Figure に表示されているのと同じパディングを使用するには、名前と値の引数 Padding
を "figure"
として指定します。指定する寸法にはパディングが含まれます。したがって、エクスポートされたプロットは、追加のパディングに対応するためにわずかに小さくなります。
exportgraphics(f,"plot-figure-padding.jpg", ... Units="pixels",Width=400,Height=300, ... Padding="figure")
カスタム パディング値を指定するには、名前と値の引数 Padding
を、Width
および Height
の値と同じ単位の数値として指定します。この場合、プロットの各辺に 10 ピクセルを追加します。
exportgraphics(f,"plot-10px-padding.jpg", ... Units="pixels",Width=400,Height=300, ... Padding=10)
背景色の指定
既定では、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")
座標軸の範囲と目盛り値の保持
場合によっては、exportgraphics
関数は、出力のフォント サイズと縦横比に応じて、異なる座標軸の範囲または目盛り値を使用して内容を取得することがあります。座標軸の範囲と目盛り値が変更されないようにするには、座標軸の目盛り値モードおよび範囲モードのプロパティを "manual"
に設定します。たとえば、直交座標軸にプロットする場合は、XTickMode
、YTickMode
、ZTickMode
、XLimMode
、YLimMode
、および 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)
極座標プロットの場合は、極座標軸の RTickMode
、ThetaTickMode
、RLimMode
、ThetaLimMode
の各プロパティを "manual"
に設定します。