제안 시스템

디자인킷 · 그래프

매체별 예산 배분 트리맵

D-그래프-예산배분-트리맵

매체별 예산 배분 트리맵

언제 쓰는가

전체 예산을 매체별로 어떻게 나누는지 면적으로 보여 주는 장면. 미디어 믹스 제안. 매체 4~6개(왼쪽 큰 칸 1 + 윗줄 2 + 아랫줄 1~3). 가장 큰 칸만 강조색, 나머지는 큰 순서대로 진한 회색에서 옅은 회색. 값 바꾸는 법: 칸 사이 3px. 왼쪽 큰 칸 폭 = 1085 × 비중 ÷ 100, 높이 290. 나머지 영역 폭 = 1088 − 큰 칸 폭 − 3. 윗줄 높이 = 287 × 윗줄 비중 합 ÷ 나머지 비중 합, 윗줄 각 칸 폭 = 줄 폭 × 비중 ÷ 줄 비중 합. 아랫줄도 같은 식. 비중 내림차순으로 a → g4 → g3 → g2 → g1 → sf, 진한 칸의 글자는 class on, 옅은 칸은 class v.

참고

Looker Studio 차트 선택 안내(https://hs.improvado.io/hubfs/AI-Generated%20Media/PDF/looker_studio_chart_decision_tree.pdf)의 "채널별 지출 구성은 트리맵", Financial Times Visual Vocabulary(https://github.com/Financial-Times/chart-doctor/tree/main/visual-vocabulary) Part-to-whole 분류의 treemap, Supermetrics 대시보드 사례(https://supermetrics.com/blog/looker-studio-examples) 참고. 금액 대신 비중만 표기하도록 직접 제작.

조각

<div class="dk dk-tree">
<div class="dk-card">
<p class="ttl"><span>매체별 예산 배분 비중 · 전체 100%</span></p>
<svg width="1088" height="290" viewBox="0 0 1088 290" role="img">
<rect x="0" y="0" width="412.3" height="290" rx="4" class="a"/>
<text x="16" y="28" class="on md">검색 광고</text>
<text x="16" y="76" class="on hg">38%</text>
<text x="16" y="272" class="on2">브랜드 방어 + 일반 키워드 확장</text>
<rect x="415.3" y="0" width="401.8" height="185.2" rx="4" class="g4"/>
<text x="431.3" y="28" class="on md">SNS 광고</text>
<text x="431.3" y="76" class="on hg">24%</text>
<text x="431.3" y="167.2" class="on2">신규 도달</text>
<rect x="820.1" y="0" width="267.9" height="185.2" rx="4" class="g3"/>
<text x="836.1" y="28" class="on md">영상 광고</text>
<text x="836.1" y="76" class="on hg">16%</text>
<text x="836.1" y="167.2" class="on2">인지</text>
<rect x="415.3" y="188.2" width="363.7" height="101.8" rx="4" class="g2"/>
<text x="431.3" y="216.2" class="v md">디스플레이</text>
<text x="431.3" y="246.2" class="v big">12%</text>
<rect x="782" y="188.2" width="181.8" height="101.8" rx="4" class="g1"/>
<text x="798" y="216.2" class="v">체험단·후기</text>
<text x="798" y="246.2" class="v big">6%</text>
<rect x="966.8" y="188.2" width="121.2" height="101.8" rx="4" class="sf"/>
<text x="982.8" y="216.2" class="v">예비</text>
<text x="982.8" y="246.2" class="v big">4%</text>
</svg>
<p class="note">예시 수치는 가상 값 · 실제 집계 값과 출처, 집계 기간으로 교체</p>
</div>
</div>

스타일

.dk-tree .dk-card{padding:22px 32px 20px}
.dk-tree .ttl{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--f-cap);font-weight:600;color:var(--mu);margin:0 0 var(--s3)}
.dk-tree .lg{display:flex;gap:var(--s4);font-weight:400}
.dk-tree .lg span{display:flex;align-items:center;gap:6px}
.dk-tree .lg i{display:block;width:12px;height:12px;border-radius:3px}
.dk-tree .lg i.c-a{background:var(--ac)}
.dk-tree .lg i.c-w{background:var(--acw)}
.dk-tree .lg i.c-s{background:var(--soft)}
.dk-tree .lg i.c-g1{background:var(--g1)}
.dk-tree .lg i.c-g2{background:var(--g2)}
.dk-tree .lg i.c-g3{background:var(--g3)}
.dk-tree .lg i.c-g4{background:var(--g4)}
.dk-tree .lg i.c-o{background:none;border:2px solid var(--ac)}
.dk-tree .lg i.c-e{background:var(--soft);border:1px dashed var(--g3)}
.dk-tree .lg i.c-t{width:14px;height:3px;border-radius:0;background:var(--ink)}
.dk-tree .note{font-size:var(--f-cap);color:var(--mu);margin:var(--s3) 0 0}
.dk-tree svg{display:block}
.dk-tree svg text{font-family:inherit;font-size:13px;fill:var(--mu);font-variant-numeric:tabular-nums}
.dk-tree svg .a{fill:var(--ac)}
.dk-tree svg .aw{fill:var(--acw)}
.dk-tree svg .sf{fill:var(--soft)}
.dk-tree svg .g1{fill:var(--g1)}
.dk-tree svg .g2{fill:var(--g2)}
.dk-tree svg .g3{fill:var(--g3)}
.dk-tree svg .g4{fill:var(--g4)}
.dk-tree svg .ax{stroke:var(--line2);stroke-width:1;fill:none}
.dk-tree svg .gr{stroke:var(--line);stroke-width:1;fill:none}
.dk-tree svg .tg{stroke:var(--g3);stroke-width:1;stroke-dasharray:4 4;fill:none}
.dk-tree svg text.k{fill:var(--ink2)}
.dk-tree svg text.v{fill:var(--ink);font-weight:600}
.dk-tree svg text.va{fill:var(--ac);font-weight:700}
.dk-tree svg text.on{fill:var(--card);font-weight:600}
.dk-tree svg text.big{font-size:24px;font-weight:700}
.dk-tree svg text.md{font-size:16px}
.dk-tree svg .ln{fill:none;stroke:var(--g4);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.dk-tree svg .ln.hot{stroke:var(--ac)}
.dk-tree svg .ln.sub{stroke:var(--g2);stroke-width:2}
.dk-tree svg .dot{fill:var(--ac);stroke:var(--card);stroke-width:2}
.dk-tree svg .dot.m{fill:var(--g4)}
.dk-tree svg .dot.s{fill:var(--g2)}
.dk-tree svg .ol{fill:none;stroke:var(--ac);stroke-width:2.5}
.dk-tree svg .al{stroke:var(--ac);stroke-width:1.5;fill:none}
.dk-tree svg text.hg{font-size:44px;font-weight:700}
.dk-tree svg text.on2{fill:var(--card)}