핵심 요약:
- 엑셀에서 샌키 다이어그램을 만드는 것은 전통적으로 타사 애드인과 기술적 지식이 필요하여 비즈니스 전문가들에게 장벽이 되었습니다.
- Excelmatic은 간단한 언어 지시만으로 샌키 다이어그램을 즉시 생성하여 코딩이나 복잡한 설정 없이 프로세스를 단순화합니다.
- 엑셀, Python 또는 R의 수동 방법과 비교하여, Excelmatic은 기술적 구현보다는 통찰력에 집중할 수 있도록 몇 초 만에 전문적인 샌키 시각화를 제공합니다.
- 데이터 흐름을 빠르게 시각화해야 하는 마케팅, 영업 및 운영 전문가들에게 Excelmatic과 같은 AI 도구를 채택하는 것은 더 빠른 분석과 더 나은 의사 결정을 의미합니다.
샌키 다이어그램의 아름다움은 다단계 시스템을 단순화하는 능력에 있습니다. 가장 큰 에너지 손실이나 예산 배분을 찾기 위해 데이터 행을 뒤지는 대신, 가장 두꺼운 흐름을 보면 즉시 발견할 수 있습니다. 이는 에너지 관리, 재무 분석, 마케팅 퍼널 최적화, 그리고 정확한 수치 비교보다 자원의 흐름과 변환을 이해하는 것이 더 중요한 모든 시나리오에 유용하게 만듭니다.
샌키 다이어그램이란?
샌키 다이어그램은 연결 화살표의 너비가 서로 다른 단계, 범주 또는 개체 간의 흐름 크기를 나타내는 특수한 흐름 시각화입니다. 프로세스 단계를 보여주는 전통적인 플로우차트나 개별 값을 비교하는 막대 그래프와 달리, 샌키 다이어그램은 양이 시스템을 통해 어떻게 이동, 변환 또는 분배되는지를 보여주는 데 탁월합니다.

위 다이어그램은 연간 $100,000 예산이 서로 다른 범주를 통해 어떻게 흐르는지 보여줍니다. 마케팅 배정($40,000)이 R&D($25,000)에 비해 시각적으로 더 두꺼운 흐름으로 나타나 비례적 차이를 즉시 파악할 수 있습니다.
샌키 다이어그램의 역사와 진화
알려진 최초의 샌키 다이어그램은 1898년 매튜 헨리 피니어스 리얼 샌키 선장이 증기 기관의 에너지 효율성을 보여주기 위해 사용했을 때 등장했습니다. 그의 다이어그램은 연료 에너지의 작은 부분만이 실제 유용한 작업에 기여하고 대부분이 폐열로 손실된다는 것을 드러냈습니다.

그러나 비례적 흐름 시각화의 개념은 샌키 선장보다 앞섭니다. 샤를 조제프 미나르는 1869년 나폴레옹의 재앙적인 1812년 러시아 원정을 묘사한 가장 유명한 흐름 다이어그램을 만들었습니다. 미나르의 다이어그램은 군대가 러시아로 진격하고 후퇴하면서 줄어드는 규모를 보여주었으며, 선의 두께는 생존한 병사의 수를 나타냈습니다.

샌키 다이어그램의 구성 요소
샌키 다이어그램의 주요 요소를 이해하면 기존 다이어그램을 해석하고 효과적으로 자신만의 다이어그램을 만드는 데 도움이 됩니다.
- 노드는 시스템의 범주, 단계 또는 개체를 나타냅니다. 예산 예시에서 "연간 예산", "마케팅", "디지털 광고"는 모두 노드입니다. 소스 노드(예: "연간 예산")는 일반적으로 왼쪽에 나타나고, 타겟 노드(예: "디지털 광고")는 오른쪽에 나타납니다.
- 흐름 또는 링크는 노드 간의 방향성 연결선이며, 그 너비는 나타내는 값에 비례합니다. 연간 예산에서 마케팅으로 가는 두꺼운 주황색 흐름은 $40,000을 나타내는 반면, 콘텐츠로 가는 훨씬 얇은 흐름은 $5,000만 나타냅니다. 이 비례적 너비가 샌키 다이어그램을 매우 효과적으로 만드는 정의적 특성입니다.
- 값은 각 흐름의 너비를 결정하는 수치 데이터입니다. 이는 돈, 에너지, 사람 또는 시스템을 통해 이동하는 정량화 가능한 자원을 나타낼 수 있습니다.
- 감소는 손실, 낭비 또는 타겟 노드에 도달하지 않고 시스템을 빠져나가는 자원을 나타내는 특별한 흐름입니다. 예산 예시에서는 감소를 보여주지 않지만, 열 손실을 보여주는 에너지 다이어그램이나 프로세스를 포기하는 고객을 보여주는 마케팅 퍼널에서 볼 수 있습니다.
샌키 다이어그램 만드는 방법
샌키 다이어그램을 만드는 것은 선호하는 도구와 기술적 숙련도에 따라 다른 접근 방식이 필요합니다. 동일한 예산 배분 예시를 엑셀, Python, R을 사용하여 단계별로 살펴보겠으므로, 여러분의 워크플로우와 전문성에 가장 적합한 방법을 선택할 수 있습니다.
엑셀에서 샌키 다이어그램: AI vs. 전통적 애드인
엑셀에는 기본 샌키 차트 유형이 포함되어 있지 않아 사용자들은 해결책을 찾아야 합니다. 전통적인 애드인 방식과 현대적인 AI 기반 방식을 비교해 보겠습니다.
AI 기반 방법 (Excelmatic 사용)
엑셀에서 샌키 다이어그램을 만드는 가장 빠르고 직관적인 방법은 Excelmatic과 같은 AI 에이전트를 사용하는 것입니다. 메뉴를 탐색하고 타사 소프트웨어를 설치하는 대신, 평범한 언어로 요청을 간단히 명시할 수 있습니다.
과정은 매우 간단합니다:
- 데이터 파일 업로드: 각 흐름에 대한 소스, 타겟 및 값이 포함된 파일을 업로드합니다.
- 요구사항 명시: "이 데이터에서 예산 배분을 보여주는 샌키 다이어그램을 만들어줘"와 같은 간단한 프롬프트를 입력합니다.
- 차트 획득: Excelmatic이 데이터를 분석하고 즉시 전문적이고 정확한 샌키 다이어그램을 생성합니다.

이 접근 방식은 애드인과 관련된 학습 곡선을 제거하고 전체 프로세스를 자동화합니다. 기술적 단계나 코드 작성에 얽매이지 않고 복잡한 시각화를 빠르게 생성해야 하는 비즈니스 전문가에게 이상적입니다. AI가 차트 생성을 처리하므로 통찰력에 집중할 수 있습니다.
전통적 방법 (애드인 사용)
수동 접근 방식을 선호하는 경우 타사 애드인을 사용해야 합니다. ChartExpo가 가장 인기 있는 옵션 중 하나입니다.

다이어그램을 만들기 전에 데이터를 소스-타겟-값 형식으로 구조화해야 합니다. 각 행은 하나의 흐름 연결을 나타내야 합니다.
ChartExpo를 설치하면 과정은 간단합니다. 먼저 Microsoft AppSource에서 애드인을 설치합니다. 그런 다음 데이터 범위(헤더 포함)를 선택하고 ChartExpo의 시각화 옵션에서 Sankey Chart를 선택합니다. 애드인이 소스, 타겟 및 값 열을 감지하고 미리보기를 제공하여 차트를 생성하고 사용자 정의할 수 있게 합니다.
비교: 애드인은 작업을 수행하지만 설치, 수동 데이터 선택 및 별도의 인터페이스 탐색이 필요합니다. Excelmatic과 같은 AI 도구는 이를 단일 대화형 단계로 간소화하여 훨씬 더 빠르고 사용자 친화적으로 만듭니다.
Python에서 샌키 다이어그램
코딩을 선호하는 경우, Python의 Plotly 라이브러리는 대화형이고 고품질의 샌키 다이어그램을 만드는 데 훌륭한 옵션입니다. 동일한 예산 배분 데이터를 사용하여 시각화를 재현해 보겠습니다.
1단계: 데이터 준비
데이터를 Plotly가 기대하는 형식으로 구성하는 것으로 시작합니다: 노드 이름 목록, 각 흐름에 대한 소스 인덱스, 타겟 인덱스 및 값을 지정하는 배열.
import plotly.graph_objects as go
# 다이어그램의 모든 노드 정의
nodes = ["Annual Budget", "Marketing", "Operations", "R&D",
"Digital Ads", "Events", "Content", "Salaries",
"Office", "Utilities", "Software", "Equipment"]
# 연결 정의 (노드 인덱스 사용)
source_indices = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3]
target_indices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
values = [40, 35, 25, 25, 10, 5, 20, 10, 5, 15, 10]
인덱스는 nodes 목록의 위치에 해당하므로, source_indices = [0, 0, 0]은 처음 세 흐름이 "Annual Budget"(위치 0)에서 시작함을 의미합니다.
2단계: 기본 샌키 생성
Plotly의 Sankey 객체를 사용하여 핵심 다이어그램 구조를 생성합니다.
fig = go.Figure(data=[go.Sankey(
node=dict(
label=nodes,
pad=15,
thickness=20
),
link=dict(
source=source_indices,
target=target_indices,
value=values
)
)])
이것은 기본 스타일링으로 기능적인 샌키 다이어그램을 생성합니다. pad는 노드 간 간격을 제어하고, thickness는 노드 사각형이 나타나는 너비를 결정합니다.
3단계: 스타일링 및 사용자 정의
색상, 개선된 레이아웃 및 전문적인 서식으로 다이어그램을 향상시킵니다.
# 색상과 투명도 추가
fig.update_traces(
node_color=["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728",
"#ff9999", "#ff9999", "#ff9999", "#90ee90",
"#90ee90", "#90ee90", "#ffcccb", "#ffcccb"],
link_color=["rgba(255, 127, 14, 0.4)", "rgba(44, 160, 44, 0.4)",
"rgba(214, 39, 40, 0.4)", "rgba(255, 127, 14, 0.6)",
"rgba(255, 127, 14, 0.6)", "rgba(255, 127, 14, 0.6)",
"rgba(44, 160, 44, 0.6)", "rgba(44, 160, 44, 0.6)",
"rgba(44, 160, 44, 0.6)", "rgba(214, 39, 40, 0.6)",
"rgba(214, 39, 40, 0.6)"]
)
# 더 나은 프레젠테이션을 위한 레이아웃 업데이트
fig.update_layout(
title="Annual Budget Allocation",
font=dict(size=16, family="Arial Black", color="black"),
width=900,
height=600
)
4단계: 표시 및 내보내기
다이어그램을 표시하고 다양한 형식으로 저장합니다.
fig.show() # Jupyter 노트북이나 브라우저에서 표시
# 내보내기 옵션
fig.write_html("budget_sankey.html") # 대화형 웹 버전
fig.write_image("budget_sankey.png") # 정적 이미지
R에서 샌키 다이어그램
R의 networkD3 패키지는 대화형이고 웹 준비가 된 샌키 다이어그램을 만드는 또 다른 강력한 도구입니다. 이 접근 방식은 호버 효과와 R Markdown과의 쉬운 통합과 같은 내장된 상호작용성을 제공합니다.
1단계: 설정 및 데이터 준비
먼저 필요한 패키지를 설치하고 로드한 다음, 데이터를 nodes와 links 데이터프레임으로 구조화합니다.
# 필요한 패키지 설치 (한 번 실행)
install.packages(c("networkD3", "dplyr"))
# 라이브러리 로드
library(networkD3)
library(dplyr)
# 노드 데이터프레임 생성
nodes <- data.frame(
name = c("Annual Budget", "Marketing", "Operations", "R&D",
"Digital Ads", "Events", "Content", "Salaries",
"Office", "Utilities", "Software", "Equipment")
)
# 링크 데이터프레임 생성 (참고: networkD3는 0 기반 인덱싱 사용)
links <- data.frame(
source = c(0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3),
target = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
value = c(40, 35, 25, 25, 10, 5, 20, 10, 5, 15, 10)
)
2단계: 기본 샌키 생성
sankeyNetwork() 함수를 사용하여 다이어그램을 생성합니다.
# 기본 샌키 다이어그램 생성
sankey_plot <- sankeyNetwork(
Links = links,
Nodes = nodes,
Source = "source",
Target = "target",
Value = "value",
NodeID = "name",
units = "K USD"
)
# 플롯 표시
sankey_plot
이것은 사용자가 흐름 위로 마우스를 가져가고 노드를 드래그하여 레이아웃을 재구성할 수 있는 대화형 다이어그램을 생성합니다.
3단계: 사용자 정의 및 스타일링
색상, 크기 조정 및 기타 서식 옵션으로 다이어그램을 향상시킵니다.
# 사용자 정의가 포함된 고급 샌키
(sankey_advanced <- sankeyNetwork(
Links = links,
Nodes = nodes,
Source = "source",
Target = "target",
Value = "value",
NodeID = "name",
units = "K USD",
fontSize = 14,
fontFamily = "Arial",
nodeWidth = 30,
nodePadding = 20,
margin = list(top = 50, right = 50, bottom = 50, left = 50),
height = 600,
width = 900
))
4단계: 내보내기 및 통합 옵션
대화형 다이어그램을 독립형 HTML 파일로 저장합니다.
# HTML 파일로 저장
library(htmlwidgets)
saveWidget(sankey_advanced, "budget_sankey.html", selfcontained = TRUE)
# 정적 이미지 내보내기 (선택 사항 - webshot2 패키지 필요)
install.packages("webshot2")
library(webshot2)
webshot("budget_sankey.html", "budget_sankey.png", vwidth = 900, vheight = 600)
![5](/images/blog/content/sankey-diagram