Main Content

グラフィックス オブジェクトへの透明度の追加

透明度とは

グラフィックス オブジェクトの透明度は、そのオブジェクトが透けて見える度合いを決めます。グラフィックス オブジェクトに透明度を追加してチャートの見た目をカスタマイズしたり、通常では隠されているオブジェクトの詳細を見えるようにしたりできます。この表では、不透明な表面と半透明な表面の違いを説明します。

不透明なオブジェクト半透明なオブジェクト

Opaque surface plot

Semitransparent surface plot

透明度をサポートするグラフィックス オブジェクト

オブジェクトの透明度をコントロールするには、関数 alpha を使用するか、オブジェクトの透明度に関するプロパティを設定します。一部のグラフィックス オブジェクトではオブジェクトの面とエッジに異なる透明度値を使用することができます。

次の表は、透明度および対応するプロパティをサポートするオブジェクトの一覧です。プロパティを範囲 [0,1] のスカラー値に設定します。値が 0 であれば完全に透明、値が 1 であれば完全に不透明であることを意味し、0 から 1 の間の値は半透明となります。

透明度をサポートするグラフィックス オブジェクト一様な透明度に代わるプロパティ
areaFaceAlpha
EdgeAlpha
bar seriesFaceAlpha
EdgeAlpha
scatter seriesMarkerFaceAlpha
MarkerEdgeAlpha
bubblechart seriesMarkerFaceAlpha
MarkerEdgeAlpha
histogramFaceAlpha
histogram2FaceAlpha
chart surfaceFaceAlpha
EdgeAlpha
primitive surfaceFaceAlpha
EdgeAlpha
patchFaceAlpha
EdgeAlpha
imageAlphaData

ヒント

patch、surface、scatter、および image オブジェクトでは、アルファ データを使用してオブジェクト内で透明度を変化させられます。詳細は、アルファ データを使用した透明度の変更を参照してください。

透明度をもつ面グラフの作成

2 つの area オブジェクトのそれぞれの FaceAlpha および EdgeAlpha プロパティを設定して 2 つの半透明な面グラフを組み合わせます。

x = linspace(0,10);
y1 = 4 + sin(x).*exp(0.1*x);
area(x,y1,'FaceColor','b','FaceAlpha',.3,'EdgeAlpha',.3)

y2 = 4 + cos(x).*exp(0.1*x);
hold on
area(x,y2,'FaceColor','r','FaceAlpha',.3,'EdgeAlpha',.3)
hold off

透明度をもつ棒グラフの作成

bar series オブジェクトの FaceAlpha プロパティを 0 から 1 の間の値に設定して半透明な棒グラフを作成します。グリッド ラインを表示します。

month = 1:5;
sales = [10 25 85 35 16];
bar(month,sales,'FaceAlpha',.5)
grid on

透明度をもつ散布図の作成

青い半透明のマーカーを使用して散布図を作成します。次に、赤い半透明のマーカーを使用して散布図を追加します。scatter series オブジェクトの MarkerFaceColor および MarkerEdgeColor プロパティを設定してマーカーの色を指定します。MarkerFaceAlpha および MarkerEdgeAlpha プロパティを 0 から 1 の間のスカラー値に設定することにより透明度を指定します。

x = [5 10 11 13 18];
y1 = [40 80 150 80 50];
a1 = 100*[100 50 80 30 50];
scatter(x,y1,a1,'MarkerFaceColor','b','MarkerEdgeColor','b',...
    'MarkerFaceAlpha',.2,'MarkerEdgeAlpha',.2)
axis([0 20 0 200])

x = [2 6 8 11 13];
y2 = [30 40 100 60 140];
a2 = 100*[30 50 30 80 80];
hold on
scatter(x,y2,a2,'MarkerFaceColor','r','MarkerEdgeColor','r',...
    'MarkerFaceAlpha',.2,'MarkerEdgeAlpha',.2)
hold off

アルファ データを使用した透明度の変更

patch、surface および image オブジェクトには、オブジェクト内でさまざまな透明度を使用するための追加のプロパティがいくつかあります。

  • image — 各イメージ要素に対して異なる透明度を指定します。CData プロパティと同じサイズの配列に AlphaData プロパティを設定することで値を指定します。

  • chart および primitive surface — 各面およびエッジに異なる透明度を指定します。また、各面またはエッジ間で透明度を内挿するか、均一な透明度を使用するかを指定することができます。まず、ZData プロパティと同じサイズの配列に AlphaData プロパティを設定して透明度値を指定します。次に、FaceAlpha および EdgeAlpha プロパティを 'flat' または 'interp' のいずれかに設定して透明度を均一にするか内挿するか指定します。

  • patch — 各面およびエッジに異なる透明度値を指定します。また、各面またはエッジ間で透明度を内挿するか、均一な透明度を使用するかを指定することができます。まず、FaceVertexAlphaData プロパティを patch の面の数 (均一な透明度の場合) または頂点の数 (内挿された透明度の場合) と同じ長さをもつ列ベクトルに設定し、透明度値を指定します。次に、FaceAlpha および EdgeAlpha プロパティを 'flat' または 'interp' のいずれかに設定して透明度を均一にするか内挿するか指定します。

  • scatter プロット — 各マーカーに対して異なる透明度値を指定します。まず、XData プロパティと同じサイズの配列に AlphaData プロパティを設定して透明度値を指定します。次に、MarkerFaceAlpha または MarkerEdgeAlpha のいずれかのプロパティを 'flat' に設定して、均一な透明度を指定します。

AlphaDataMapping プロパティを使用してオブジェクトがアルファ データ値をどのように解釈するかをコントロールします。詳細については、プロパティの説明を参照してください。

表面グラフの透明度の変更

表面を作成し、z データの勾配に基づいて透明度を変化させます。各表面の面で均一な透明度を使用するには、FaceAlpha'flat' に設定します。表面色を青に設定して透明度がどのように変化するか表示します。

[x,y] = meshgrid(-2:.2:2);
z = x.*exp(-x.^2-y.^2);
a = gradient(z);

surf(x,y,z,'AlphaData',a,...
    'FaceAlpha','flat',...
    'FaceColor','blue')

patch オブジェクト透明度の変更

関数 patch を使用してラインをプロットします。patch が閉じた多角形の代わりにラインを作成するよう y の最後のエントリを NaN に設定します。

列ベクトルに FaceVertexAlphaData プロパティを設定して、頂点ごとに透明度値を定義します。AlphaDataMapping プロパティを 'none' に設定して、値を透明度値 (0 は透明、1 は不透明) として解釈します。EdgeAlpha プロパティを 'interp' に設定して、頂点間の透明度を内挿します。

x = linspace(1,10,10);
y = sin(x);
y(end) = NaN; 

figure
alpha_values = linspace(0,1,10)'; 
patch(x,y,'red','EdgeColor','red',...
    'FaceVertexAlphaData',alpha_values,'AlphaDataMapping','none',...
    'EdgeAlpha','interp')

参考

| | | | | | | |