Visualization ChooserSAFE
Overview
An agent skill published by revfactory.
459e1bb8f76eOBSERVED · 2026-10-12What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: visualization-chooser
description: "데이터 유형과 분석 목적에 따른 시각화 유형 선택 매트릭스, matplotlib/seaborn/plotly 구현 패턴 가이드. '시각화 선택', '차트 유형', '그래프 종류', 'matplotlib', 'seaborn', 'plotly', '히트맵', '산점도', '박스플롯', '대시보드 레이아웃' 등 데이터 시각화 설계 시 이 스킬을 사용한다. visualizer의 시각화 설계 역량을 강화한다. 단, 통계 분석이나 데이터 정제는 이 스킬의 범위가 아니다."
---
# Visualization Chooser — 시각화 유형 선택 매트릭스 가이드
데이터 유형과 커뮤니케이션 목적에 맞는 최적의 시각화를 선택하는 프레임워크.
## 시각화 선택 매트릭스
### 비교
| 목적 | 차트 | 적합 | 예시 |
|------|------|------|------|
| 항목 비교 | 막대 차트 | 5~15개 카테고리 | 제품별 매출 |
| 시간 추이 비교 | 라인 차트 | 연속 시간, 2~5 시리즈 | 월별 매출 추이 |
| 부분-전체 | 스택 막대 | 비율 비교 | 채널별 매출 비중 |
| 소수 비율 | 파이 차트 | 2~5개 항목만 | 시장 점유율 |
| 다수 비율 | 트리맵 | 계층적 데이터 | 카테고리별 매출 |
### 분포
| 목적 | 차트 | 적합 | 예시 |
|------|------|------|------|
| 단일 분포 | 히스토그램 | 연속 변수 | 나이 분포 |
| 분포 비교 | 박스플롯 | 그룹별 비교 | 부서별 급여 |
| 밀도 비교 | 바이올린 플롯 | 분포 형태 중요 | 점수 분포 |
| 이상치 강조 | 스트립 플롯 | 소규모 데이터 | 개별 데이터 포인트 |
### 관계
| 목적 | 차트 | 적합 | 예시 |
|------|------|------|------|
| 두 변수 관계 | 산점도 | 연속×연속 | 광고비 vs 매출 |
| 다변수 상관 | 히트맵 | 상관 매트릭스 | 변수 간 상관 |
| 추세선 | 회귀 플롯 | 선형 관계 | 경험 vs 급여 |
| 밀도 산점도 | 2D 밀도 | 데이터 과다 | 위치 데이터 |
| 버블 차트 | 산점도 + 크기 | 3변수 | 국가별 GDP/인구/기대수명 |
### 시간
| 목적 | 차트 | 적합 | 예시 |
|------|------|------|------|
| 추세 | 라인 차트 | 연속 시계열 | 일별 주가 |
| 계절성 | 분해 그래프 | 주기 패턴 | 월별 전력 사용 |
| 이벤트 강조 | 어노테이션 라인 | 특정 시점 | 마케팅 캠페인 효과 |
| 범위 | 영역 차트 | 누적/비율 | 채널별 트래픽 |
## 구현 코드 패턴
### 한글 설정 (필수)
```python
import matplotlib.pyplot as plt
import platform
if platform.system() == 'Darwin': # macOS
plt.rcParams['font.family'] = 'AppleGothic'
elif platform.system() == 'Windows':
plt.rcParams['font.family'] = 'Malgun Gothic'
else: # Linux
plt.rcParams['font.family'] = 'NanumGothic'
plt.rcParams['axes.unicode_minus'] = False
```
### 색상 팔레트
```python
# 순서형 (연속 값)
palette_sequential = 'YlOrRd'
# 범주형 (구분)
palette_categorical = ['#4C72B0', '#55A868', '#C44E52', '#8172B3', '#CCB974']
# 발산형 (양극)
palette_diverging = 'RdBu_r'
# 접근성 고려
palette_colorblind = sns.color_palette('colorblind')
```
### 대시보드 레이아웃
```python
fig, axes = plt.subplots(2, 3, figsize=(18, 10))
fig.suptitle('매출 분석 대시보드', fontsize=16, fontweight='bold')
# KPI 카드 (텍스트 기반)
axes[0,0].text(0.5, 0.5, f'총 매출\n₩{total:,.0f}', ha='center', va='center', fontsize=20)
# 추이 차트
axes[0,1].plot(dates, sales, '-o')
# 분포
axes[0,2].boxplot([q1, q2, q3, q4])
# 비교
axes[1,0].barh(categories, values)
# 상관
sns.heatmap(corr_matrix, ax=axes[1,1], annot=True, cmap='RdBu_r')
# 파이
axes[1,2].pie(shares, labels=channels, autopct='%1.1f%%')
plt.tight_layout()
```
## 시각화 안티패턴
| 안티패턴 | 문제 | 해결 |
|---------|------|------|
| 3D 차트 | 왜곡, 읽기 어려움 | 2D 사용 |
| 이중 Y축 | 비교 오해 유발 | 별도 차트 또는 정규화 |
| 파이 5개 초과 | 비교 불가 | 막대 차트 전환 |
| 레인보우 색상 | 패턴 구분 어려움 | 순서/범주 팔레트 |
| 0이 아닌 Y축 시작 | 차이 과장 | Y축 0부터 시작 |
| 정보 과부하 | 핵심 놓침 | 강조점 하나에 집중 |
| 범례 없음 | 해석 불가 | 명확한 범례/라벨 |
## 인터랙티브 시각화 (Plotly)
```python
import plotly.express as px
# 산점도 + 색상 + 크기 + 호버
fig = px.scatter(
df, x='광고비', y='매출',
color='카테고리', size='고객수',
hover_data=['제품명'],
title='광고비 대비 매출 분석'
)
fig.show()
# Plotly → HTML 내보내기
fig.write_html('interactive_chart.html')
```
## 경영진 보고서용 시각화 원칙
```
1. 핵심 메시지 하나: 차트당 하나의 인사이트
2. 제목 = 결론: "매출이 15% 하락했다" (O) vs "월별 매출" (X)
3. 색상 = 의미: 빨강=나쁨, 초록=좋음, 회색=기준
4. 어노테이션: 핵심 수치 직접 표시
5. 비교 기준: 전월, 전년, 목표, 업계 평균
```Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
459e1bb8f76efull audit observations/trust-audit/skill/revfactory__visualization-chooser.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 459e1bb8f76e | SAFE | B | 89 | first audit |
Questions
Is Visualization Chooser safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Visualization Chooser access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (459e1bb8f76e), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.