Main Content

그래픽스 객체에 투명도 추가하기

투명도란?

그래픽스 객체의 투명도에 따라 객체를 투시할 수 있는 정도가 결정됩니다. 그래픽스 객체에 투명도를 추가해 차트의 모양을 사용자 지정하거나 투명도를 추가하지 않으면 보여지지 않는 객체에 대한 세부적인 사항을 드러낼 수 있습니다. 다음 표에서는 불투명 곡면과 반투명 곡면의 차이점을 보여줍니다.

불투명 객체반투명 객체

Opaque surface plot

Semitransparent surface plot

투명도를 지원하는 그래픽스 객체

alpha 함수를 사용하거나 투명도와 관련된 객체의 속성을 설정하여 객체의 투명도를 제어할 수 있습니다. 일부 그래픽스 객체에서는 객체의 면과 가장자리에 서로 다른 투명도 값을 사용할 수 있습니다.

다음 표에는 투명도와 이에 대응되는 속성을 지원하는 객체가 나와 있습니다. 속성은 범위 [0,1]의 스칼라 값으로 설정합니다. 값이 0이면 완전 투명함을 의미하고, 값이 1이면 완전 불투명함을 의미하며, 0과 1 사이의 값은 반투명함을 의미합니다.

투명도를 지원하는 그래픽스 객체균일한 투명도를 지정하는 속성
area 객체FaceAlpha
EdgeAlpha
bar series 객체FaceAlpha
EdgeAlpha
scatter series 객체MarkerFaceAlpha
MarkerEdgeAlpha
BubbleChart series 객체MarkerFaceAlpha
MarkerEdgeAlpha
histogram 객체FaceAlpha
histogram2 객체FaceAlpha
chart surface 객체FaceAlpha
EdgeAlpha
primitive surface 객체FaceAlpha
EdgeAlpha
patch 객체FaceAlpha
EdgeAlpha
image 객체AlphaData

patch, surface, scatter, image 객체에서는 알파 데이터를 사용하여 객체 전반에 걸쳐 투명도에 변화를 줄 수 있습니다. 자세한 내용은 알파 데이터를 사용하여 투명도에 변화 주기 항목을 참조하십시오.

투명도를 사용하여 영역 차트 만들기

각 area 객체에 대해 FaceAlpha 속성과 EdgeAlpha 속성을 설정하여 두 개의 반투명 영역 차트를 결합합니다.

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

Figure contains an axes object. The axes object contains 2 objects of type area.

투명도를 사용하여 막대 차트 만들기

bar series 객체의 FaceAlpha 속성을 0과 1 사이의 값으로 설정하여 반투명 막대 차트를 만듭니다. 그리드 선을 표시합니다.

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

Figure contains an axes object. The axes object contains an object of type bar.

투명도를 사용하여 산점도 차트 만들기

파란색 반투명 마커를 사용하여 산점도 플롯을 만듭니다. 그런 다음, 빨간색 반투명 마커를 사용하여 두 번째 산점도 플롯을 추가합니다. 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

Figure contains an axes object. The axes object contains 2 objects of type scatter.

알파 데이터를 사용하여 투명도에 변화 주기

patch, surface, image 객체에는 객체 전반에 걸쳐 투명도에 변화를 주는 데 사용할 수 있는 몇 가지 추가 속성이 있습니다.

  • image — 각 이미지 요소에 대해 서로 다른 투명도 값을 지정합니다. AlphaData 속성을 CData 속성과 크기가 같은 배열로 설정하여 값을 지정합니다.

  • chart surface와 primitive surface — 각 면과 가장자리에 대해 서로 다른 투명도 값을 지정합니다. 또한, 각 면 또는 가장자리에 단순 투명도를 적용할지 아니면 보간 투명도를 적용할지를 지정할 수 있습니다. 먼저, AlphaData 속성을 ZData 속성과 크기가 같은 배열로 설정하여 투명도 값을 지정합니다. 그런 다음, FaceAlpha 속성과 EdgeAlpha 속성을 'flat' 또는 'interp'로 설정하여 단순 투명도 또는 보간 투명도를 지정합니다.

  • patch — 각 면과 가장자리에 서로 다른 투명도 값을 지정합니다. 또한, 각 면 또는 가장자리에 단순 투명도를 적용할지 아니면 보간 투명도를 적용할지를 지정할 수 있습니다. 먼저, FaceVertexAlphaData 속성을 패치에 있는 면의 개수(단순 투명도를 사용하는 경우) 또는 꼭짓점의 개수(보간 투명도를 사용하는 경우)와 같은 길이의 열 벡터로 설정하여 투명도 값을 지정합니다. 그런 다음, FaceAlpha 속성과 EdgeAlpha 속성을 'flat' 또는 'interp'로 설정하여 단순 투명도 또는 보간 투명도를 지정합니다.

  • 산점도 플롯 — 각 마커에 대해 서로 다른 투명도 값을 지정합니다. 먼저, AlphaData 속성을 XData 속성과 크기가 같은 배열로 설정하여 투명도 값을 지정합니다. 그런 다음 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')

Figure contains an axes object. The axes object contains an object of type surface.

patch 객체의 투명도에 변화 주기

patch 함수를 사용하여 선을 플로팅합니다. y의 마지막 항목을 NaN으로 설정합니다. 그러면 patch가 닫힌 다각형 대신에 선을 만듭니다.

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')

Figure contains an axes object. The axes object contains an object of type patch.

참고 항목

| | | | | | | |