ggplot2에서 geom_rect의 투명도(alpha)가 적용되지 않는 이유와 해결법

2025. 3. 20. 15:23·Data Science/Visualization

데이터 시각화에서는 특정 부분을 강조하기 위해 사각형, 라벨, 선 등을 추가하는 경우가 많습니다.

특히 geom_rect()는 그래프 위에 사각형을 그릴 때 유용하게 사용되는데요. 

그런데 alpha 값을 설정해도 투명도가 적용되지 않는 경우가 있습니다.

왜 이런 일이 발생하는지, 어떻게 해결할 수 있을지에 대해 알아보겠습니다.

 

 

geom_rect의 alpha(투명도) 값이 적용안됨

먼저, 베이스라인 코드는 다음과 같습니다.

mpg |> ggplot(aes(x=displ, y=hwy)) + 
  geom_point() + 
  geom_text_repel(data = potential_outliers, 
                  aes(label=model)) + 
  geom_point(data = potential_outliers,
             color = "red") + 
  geom_point(data = potential_outliers,
             color = "red", 
             size = 3, shape = "circle open") + 
  geom_hline(yintercept = 40, color = "red") -> p1

 

 

이제 우측 하단에 빨간 점들이 모여있는 구간을 강조하기 위해 geom_rect를 추가해 보겠습니다.

p1 + geom_rect(
    xmin = 5, xmax = 7.1, ymin = 22, ymax = 26,
    alpha = 0.2, fill = "yellow"
  )

어 이런... 투명도(alpha)를 설정했지만 예상과 달리 사각형이 투명하지 않고, 내부의 점들이 보이지 않습니다.

 

 

왜 투명도가 적용이 안될까요?

이는 geom_rect()가 단순히 한 개의 사각형을 그리는 것이 아니라, 데이터 포인트 개수만큼 동일한 사각형을 반복해서 그리기 때문입니다.

앞서 mpg 데이터셋에는 234개의 데이터가 존재합니다.

따라서 우리가 [5~7.1] X [22~26]을 포함하는 박스를 그리려고 하면 한번만 그리는 것이 아닌 234개의 동일한 박스를 생성하므로 겹쳐지면서 불투명하게 변하게 되는 것 입니다.

즉, 투명도(alpha)를 설정하더라도 중첩되면서 효과가 사라지게 되는 것이죠.

 

해결 방법: annotate()를 사용하자!

이 문제를 해결하려면, geom_rect() 대신 annotate() 함수를 사용하면 됩니다.

annotate()는 데이터 개수와 무관하게 한 번만 그리기 때문에 원하는 투명도를 적용할 수 있습니다.

p1 + annotate(geom="rect", 
           xmin = 5, xmax = 7.1, ymin = 22, ymax = 26,
           alpha = 0.2, fill = "yellow")

 

'Data Science > Visualization' 카테고리의 다른 글

[ggplot2] grouping 원리  (0) 2025.12.31
[Visualization with R] 1. Bar Chart (막대 그래프)  (0) 2023.09.07
[R] Scatterplot Matrix (산점도행렬)  (0) 2023.09.01
[R] ggplot2 Visualization  (0) 2023.03.29
'Data Science/Visualization' 카테고리의 다른 글
  • [ggplot2] grouping 원리
  • [Visualization with R] 1. Bar Chart (막대 그래프)
  • [R] Scatterplot Matrix (산점도행렬)
  • [R] ggplot2 Visualization
임파카
임파카
[ML & Statistics] 모바일 버전에서 수식 오류가 있어 PC 환경에서 접속하는 것을 권장합니다.
  • 임파카
    무기의 스탯(Stat)
    임파카
  • 전체
    오늘
    어제
    • Study (151)
      • Data Science (45)
        • Modeling (18)
        • Manipulation (21)
        • Visualization (5)
      • Statistics (60)
        • Mathmetical Statistics (54)
        • Categorical DA (1)
      • Web Programming (17)
      • Marketing (0)
      • AI (26)
        • Machine Learning (16)
        • Deep Learning (10)
      • 활동 및 프로젝트 (3)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.5
임파카
ggplot2에서 geom_rect의 투명도(alpha)가 적용되지 않는 이유와 해결법
상단으로

티스토리툴바