데이터 슬라이드

Data Slide

차트를 보여주는 슬라이드의 제목은 축 이름이 아니라 그 차트가 말하는 결론이어야 합니다.

다른 이름: Chart slideInsight-first chart
···
html
<div class="slide" id="slide">
  <span class="badge" id="badge"></span>
  <h3 class="ttl" id="ttl"></h3>
  <svg class="chart" viewBox="0 0 200 80" preserveAspectRatio="none">
    <polyline points="0,20 40,24 80,30 120,55 160,60 200,62" fill="none" stroke="var(--accent)" stroke-width="3"></polyline>
  </svg>
  <div class="ann"><span class="pt"></span><span class="lbl" id="annlbl"></span></div>
</div>
css
.slide{position:absolute;inset:6%;border-radius:clamp(6px,1.6vmin,14px);background:var(--surface);border:1px solid var(--line);padding:6vmin 7vmin;display:flex;flex-direction:column;gap:4%}
.badge{position:absolute;top:4%;right:4%;z-index:2;font:800 clamp(10px,2.4vmin,14px)/1 system-ui;padding:.3em .7em;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--accent-2)}
.slide.good .badge{color:var(--accent-3)}
.ttl{margin:0;font:700 clamp(10px,2.6vmin,14px)/1.3 -apple-system,sans-serif;color:var(--muted)}
.slide.good .ttl{color:var(--fg);font-weight:800;font-size:clamp(11px,3vmin,16px)}
.chart{flex:1;width:100%}
.ann{position:absolute;left:55%;top:42%;display:none;align-items:center;gap:6px}
.slide.good .ann{display:flex}
.pt{width:clamp(6px,1.6vmin,10px);aspect-ratio:1;border-radius:50%;background:var(--accent-3);box-shadow:0 0 0 4px rgba(24,194,156,.25)}
.lbl{font:700 clamp(8px,2vmin,11px)/1.2 -apple-system,sans-serif;color:var(--accent-3);white-space:nowrap}
js
const el = (id) => document.getElementById(id);
const slide = el('slide');
const L = {
  ko: { badge: ['✕ 축 이름', '✓ 결론'], ttl: ['월별 이탈률', '온보딩 개선 후 이탈률이 절반으로 줄었다'], ann: '개선 적용 시점' },
  en: { badge: ['✕ Axis label', '✓ Conclusion'], ttl: ['Monthly Churn Rate', 'Churn rate cut in half after the onboarding fix'], ann: 'Fix shipped here' },
};
let n = 0;
function render() {
  const good = n % 2 === 1;
  const lang = n % 4 < 2 ? 'ko' : 'en';
  const t = L[lang];
  slide.classList.toggle('good', good);
  el('badge').textContent = good ? t.badge[1] : t.badge[0];
  el('ttl').textContent = good ? t.ttl[1] : t.ttl[0];
  el('annlbl').textContent = t.ann;
}
render();
setInterval(() => { n++; render(); }, 2200);

"월별 이탈률"이라는 제목은 차트에 이미 적힌 축 이름을 그대로 반복할 뿐, 그 숫자가 좋은 소식인지 나쁜 소식인지 말해주지 않는다. 데이터 슬라이드의 제목은 차트를 보지 않고 제목만 읽어도 결론을 알 수 있어야 한다.

데모의 ✕는 "월별 이탈률"이라는 축 이름 제목 아래 선 그래프만 놓는다. ✓는 "온보딩 개선 후 이탈률이 절반으로 줄었다"는 제목을 걸고, 같은 그래프에서 그 변화가 일어난 지점에 주석을 단다.

체크리스트: 제목에서 증가·감소·변화 없음 중 어느 쪽인지 알 수 있는가, 그래프에서 그 결론이 일어나는 지점을 화살표나 라벨로 짚었는가, 축·범례처럼 결론과 무관한 요소는 흐리게 처리했는가.

언제 쓰나

분기 리포트·실험 결과처럼 숫자가 핵심인 슬라이드마다, 제목을 축 이름으로 두지 않았는지 확인하세요.