Community이미지github.com

DrNbnonono/논문-그림

보안/시스템 분야 논문(IEEE S&P, USENIX Security, CCS, NDSS, 저널, IEEE S&P Magazine)을 위한 그림 설계, 제작, 검증. 강력한 Top-4 논문 스타일을 사용합니다. 그림/도표/차트 디자인, 주장에 맞는 차트 선택, 인쇄 적합 그림 제작, 핵심을 담은 캡션 작성, matplotlib 그림을 카메라 레디 벡터 PDF로 변환 등에 활용하세요. 예제(예제/), matplotlib 스타일 모듈(스크립트/figure_style.py), 생성기(스크립트/make_examples.py), 투고 전 검사기(스크립트/check_figure.py)가 포함되어 있습니다.

논문-그림란 무엇인가요?

이 스킬은 보안/시스템 분야 최상위 학회(IEEE S&P, USENIX Security, CCS, NDSS) 논문에 적합한 고품질 그림을 제작하기 위한 종합적인 가이드와 도구 모음입니다. 핵심 원칙은 '하나의 그림은 하나의 주장'이며, 그림만 봐도 주장을 알 수 있도록 설계해야 합니다. Okabe-Ito 팔레트, 7pt 이상의 폰트, 벡터 출력 등 인쇄 적합성과 접근성을 보장하는 엄격한 스타일 규칙을 제공하며, matplotlib 기반의 재현 가능한 스크립트와 스타일 모듈(scripts/figure_style.py)을 포함합니다. 투고 전 검사기(scripts/check_figure.py)를 통해 크기, dpi, 그레이스케일/색맹 호환성을 자동으로 점검할 수 있어, 리뷰어의 눈에도 문제없는 카메라 레디 그림을 보장합니다. Claude Code, Cursor 등에서 활용할 수 있으며, 명확한 예제와 템플릿을 제공하여 누구나 일관된 품질의 논문 그림을 빠르게 제작할 수 있도록 돕습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DrNbnonono/skills/tree/HEAD/paper-figures

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

논문 그림

그림은 가시화된 주장입니다. 독자가 캡션을 읽기 전에 5초만 보고도 그 그림이 전달하는 주장을 말할 수 있을 때, 그 그림은 자리할 가치가 있습니다. 이 스킬의 모든 것은 이 테스트를 위해 존재합니다.

이 스킬이 구현하는 스타일은 S&P, USENIX Security, CCS, NDSS의 강력한 논문들이 공유하는 스타일입니다: 작은 크기, 벡터, 2단 너비 그림; 적은 표시 항목; 직접 레이블; 인쇄 적합 색상; 축을 설명하는 대신 핵심을 담은 캡션.

핵심 원칙

하나의 그림 = 하나의 주장 = 캡션의 하나의 메시지.

두 개의 주장을 보여줘야 한다면, 두 개의 패널이나 두 개의 그림을 그리세요. 세 가지를 보여주는 그림은 어떤 것도 보여주지 못한 것으로 읽힙니다.

타협할 수 없는 사항

  1. 그림 당 하나의 메시지. 캡션의 첫 문장이 그것을 밝히고, 그래픽이 그것을 뒷받침합니다.
  2. 인쇄 크기로 그리세요. 단일 컬럼 그림의 너비는 IEEE 3.5인치, ACM sigconf 3.33인치, USENIX 3.4인치입니다. LaTeX에서 크게 그리고 축소하지 마세요. 그러면 글꼴이 7pt 기준 이하로 줄어듭니다.
  3. 벡터 출력 (matplotlib의 .pdf). 텍스트나 선이 있는 모든 것에 해당합니다. 300dpi 래스터는 사진과 스크린샷에만 사용하세요.
  4. 인쇄 크기에서 글꼴 ≥ 7pt; 축 레이블 8pt, 눈금 레이블 7pt.
  5. 인쇄 적합 색상: Okabe-Ito 팔레트, 색상만으로 구별되지 않아야 하며, 그림이 그레이스케일에서도 살아남아야 합니다 (scripts/check_figure.py --preview).
  6. 오해를 부르는 축 없음: 막대 차트는 0에서 시작; 로그 스케일은 레이블 표시; 차이를 과장하기 위해 y축을 자르지 않음; 명시적이고 명시된 이유 없이 이중 y축 사용 금지.
  7. 불확실성 표시: 정량적 주장이 있는 경우 CI 밴드, 오차 막대, 또는 캡션의 n. 분모가 없는 점 추정치는 결과가 아닙니다.
  8. 캡션은 무엇을 주목해야 하는지, 그 다음 단위, 그 다음 n을 말합니다. 색상 목록이 아닙니다.
  9. 차트정크 없음: 3D, 그림자, 장식용 그라데이션, 무지개 색상표, 배경 채움, 데이터와 싸우는 격자선 금지.
  10. 재현 가능: 그림을 생성한 스크립트가 데이터 파일이나 시드와 함께 리포지토리 옆에 있어야 합니다. 아무도 재생성할 수 없는 그림은 카메라 레디 시점에서 책임입니다.

0단계 — 먼저 주장을 결정하세요

그림이 자명하게 만들어야 할 문장을 한 문장으로 쓰세요:

"공개 익스플로잇 코드가 이제 권고보다 더 빨리 나타납니다: 30일 아티팩트-대-권고 비율이 4개 시대에 걸쳐 0.63에서 1.83으로 상승했습니다."

"그리고" 없이 그 문장을 쓸 수 없다면, 두 개의 그림이 있는 것입니다.

matplotlib을 만지기 전에 templates/figure-brief.md를 작성하세요. 2분이면 되고 가장 흔한 재작업(잘못된 수량을 보여주는 아름다운 그림)을 방지합니다.

1단계 — 주장에서 인코딩을 선택하세요

references/encoding-guide.md를 읽으세요. 간략 버전:

주장 유형인코딩피해야 할 것
분포 / 속도CDF(계단형), 바이올린, 상자, 스트립분포 없는 평균 막대
쌍 비교덤벨, 기울기, 쌍 점두 개의 떠 있는 막대
시간에 따른 구성누적 영역, 소배열파이, 3D 파이
순위정렬된 수평 막대, 점 그림정렬되지 않은 막대, 무지개
두 변수 트레이드오프산점도 + 파레토 경계읽을 수 없는 크기의 버블
행렬 / 커버리지지각적으로 균일한 맵의 히트맵, 셀 내 값값 없는 무지개 히트맵
프로세스 / 타임라인스윔레인, 타임라인, 시퀀스 다이어그램산문의 날짜 표
분류 / 결정레이블된 트리, 채워진 셀의 행렬중첩된 글머리 기호 텍스트

2단계 — 공유 스타일로 그리세요

import sys; sys.path.insert(0, "scripts")
from figure_style import apply_style, new_fig, save, SERIES, panel_label

apply_style()                       # 8pt 기준, Okabe-Ito, 인쇄 적합 rcParams
fig, ax = new_fig(3.5, 2.3)         # 단일 컬럼, 올바른 종횡비
ax.plot(x, y, color=SERIES[0], label="Pre-AI")
save(fig, "figs/fig1_cdf")          # .pdf (LaTeX용) + .png (미리보기) 작성

스타일은 전역적으로 조정하고, 그림마다 절대 조정하지 마세요. 한 논문의 두 그림이 다른 글꼴이나 선 두께를 가지면 다른 두 논문처럼 읽힙니다.

references/style-spec.md는 모든 설정과 그 이유를 나열합니다.

3단계 — 직접 레이블, 캡션은 마지막에

  • 범례 상자 대신 계열 이름을 선 끝이나 플롯 위에 배치하세요. 직접 레이블이 충돌할 경우에만 범례를 사용하세요(examples/fig01_cdf.png 참조).
  • 패널 레이블 A, B, C는 왼쪽 상단에 굵게, 캡션에서 참조.
  • 축 레이블: 수량 + 단위 + 스케일 (공개 이후 일수 (로그 스케일)).
  • 그런 다음 references/captions.md로 캡션을 작성하세요: 핵심 → 축이 무엇을 보여주는지 → 단위/n/CI → 독자가 놓쳐서는 안 되는 한 가지 주의사항.

4단계 — 인쇄 적합하게 만들기

  • 팔레트: scripts/figure_style.py의 SERIES (Okabe-Ito). 순차 데이터: cividis, 절대 jet 사용 금지. 발산: RdBu_r, 의미 있는 0 주변에서만.
  • 모양으로도 인코딩하세요: 마커와 선 스타일이 계열에 따라 달라져서 그림이 그레이스케일 인쇄와 색맹 리뷰어에게도 살아남습니다.
  • 검사기 실행:
python scripts/check_figure.py figs/fig1_cdf.png --preview

크기/dpi, 색상 팔레트, 그레이스케일 및 적색맹 분리를 보고하고 fig1_cdf_gray.png / fig1_cdf_cvd.png를 씁니다. 둘 다 보세요.

references/accessibility.md에 세부 사항(대비, CVD, 대체 텍스트)이 있습니다.

5단계 — 내보내기 및 포함

  • 임베디드 TrueType 글꼴로 벡터 PDF 내보내기 (pdf.fonttype = 42, 이미 설정됨).
  • 인쇄 너비로 포함: \includegraphics[width=\columnwidth]{figs/fig1_cdf.pdf}.
  • 컴파일된 PDF를 100%에서 확인: 7pt 미만 텍스트, 잘린 레이블, 논문의 주요 개념 그림이 아닌 한 컬럼 절반보다 긴 그림이 없는지 확인.
  • references/production.md는 LaTeX 포함, 글꼴 임베딩, 파일 레이아웃을 다룹니다.

6단계 — 리뷰어처럼 검증하기

  1. 5초 테스트: 누군가에게 그림만 보여주세요; 주장을 말할 수 있나요?
  2. 캡션 테스트: 첫 문장은 "그림 3은 ...을 보여줍니다"가 아니라 주장이어야 합니다.
  3. 그레이스케일 테스트: 두 미리보기 모두 올바르게 읽힙니다.
  4. 확대 테스트: 컴파일된 PDF의 100%에서 모든 레이블을 읽을 수 있습니다.
  5. 무결성 테스트: 그림의 숫자가 표와 본문과 일치합니다; 축이 잘리지 않았습니다; 오차 막대가 캡션에 정의되어 있습니다.
  6. 재사용 테스트: PNG를 삭제하세요; 스크립트가 바이트 단위로 동일하게 재생성합니까? 그렇습니다.

표시 항목 예산

학회 등급총 표시 항목비고
Top-4 학회6–10개념 그림 하나, 타임라인 하나, 결과 표; 모든 항목이 본문에서 참조됨
매거진4–6항목당 하나의 메시지; 부록 대신 사이드바
저널8–12더 많은 공간, 동일한 규칙

그림이 본문에서 주장과 함께 참조되지 않으면("그림 5는 X를 보여줍니다"), 제거하거나 문장을 다시 작성하세요.

안티 패턴

안티 패턴실패 이유
무지개/jet 색상표지각적으로 정렬되지 않음; 값을 오도함; 그레이스케일에서 읽을 수 없음
3D 또는 그림자 막대/파이비교를 왜곡하는 장식
3개 이상의 조각이 있는 파이인간은 각도 비교를 못함; 정렬된 막대 사용
이중 y축데이터가 뒷받침하지 않는 상관관계 주장을 유도함; 두 개의 패널 사용
막대의 잘린 y축차이를 과장함; 리뷰어가 알아차릴 것임
6개 항목이 있는 범례 상자색상 매칭을 강요함; 직접 레이블 또는 소배열 사용
LaTeX에서 축소된 작은 텍스트글꼴이 7pt 아래로 떨어짐; 그림이 회색 노이즈가 됨
색상을 나열하는 캡션"파란 선은 ..."은 독자가 볼 수 없는 것을 알려줌
표의 스크린샷벡터가 아니고, 편집 가능하지 않으며, 접근성 없음
표를 다시 말하는 그림표시 항목 낭비; 주장을 지지하는 것을 유지
레이블 없는 로그 축독자가 수십 년에 걸친 기울기를 비교할 수 없음
누락된 n / 오차 막대불확실성 없는 점 추정치는 증거가 아님

리소스 맵

파일용도
references/venue-figure-profiles.mdTop-4 학회가 기대하는 것, 컬럼 너비, 캡션/배치 규칙
references/encoding-guide.md주장 → 차트 매핑, 로그 스케일, 불확실성, 표가 더 나은 경우
references/style-spec.md이유가 있는 모든 matplotlib 설정; 팔레트 16진수 코드
references/captions.md캡션 공식 및 전/후 예제
references/accessibility.md색맹 및 그레이스케일 안전, 대비, 대체 텍스트
references/production.md내보내기, LaTeX 포함, 글꼴, 파일 레이아웃, 재현성
references/anti-patterns.md제거할 것과 보여주는 예제
scripts/figure_style.pyrcParams, Okabe-Ito 팔레트, new_fig, save, panel_label
scripts/check_figure.py크기/dpi 검사, 그레이스케일 및 적색맹 미리보기, 팔레트 보고서
scripts/make_examples.py모든 예제 그림 생성 (합성 데이터)
examples/참조 이미지: 좋은 예와 나쁜 예 vs 좋은 예 쌍
templates/figure-brief.md그림 그리기 전 한 페이지 분량의 간략 설명

관련 스킬