출판 수준 그림 규칙
정확하고, 가독성이 뛰어나며, 내부적으로 일관된 과학적 그림을 위한 체크리스트입니다. 이 스킬은 시각적 하우스 스타일을 강요하지 않습니다. 프레임, 글꼴 및 팔레트는 매개변수입니다. 플로팅 전에 아래 Notebook 호출을 따르고 apply_figure_style()을 호출하세요.
오픈 사이언스 Notebook 호출
code가 이 스킬에 명명된 함수를 사용하는 모든 notebook_execute 요청은 이 스킬 ID를 포함합니다:
{ "kernelSkillIds": ["figure-style"], "code": "apply_figure_style()\n..." }
kernelSkillIds에는 스킬 ID가 포함됩니다. 함수 호출은 code에 속합니다. 이 요청은 작성된 대로 완전합니다: 명명된 함수를 직접 호출하고 import 또는 discovery 단계를 추가하지 마십시오.
§0 범위
로드 트리거 (시스템 프롬프트의 "출판 수준 플롯" 섹션과 동일한 규칙): 이 스킬은 최종 납품용 그림을 위한 것입니다. 즉, 보고서, 논문 또는 내보내기로 제공되거나 사용자가 보관할 아티팩트로 저장되는 그림을 위한 것이며, 탐색적/중간 플롯(빠른 미리보기, EDA, 정상 확인)은 해당되지 않습니다(이러한 플롯은 이 스킬 없이 평범하게 그려집니다). 로드되면, 아래의 "모든 플롯"은 납품물을 위해 렌더링하는 모든 플롯을 의미합니다.
§1–§3, §8 및 §9는 정확성에 관한 것입니다. 이는 모든 맥락의 모든 플롯에 적용되며 미학적 내용이 없습니다. §4–§7은 지침에 관한 것입니다. 이는 깔끔한 결과를 생성하는 기본값이지만 의도적인 대안으로 재정의할 수 있습니다. (단, §4.4 의미론적 0 중심 맞춤, §4.5 CVD, §6.9 리더 앵커링 등 사실적/지각적 불변성을 명시하는 §4–§7 내의 개별 규칙은 여전히 바인딩됩니다.) 이 스킬 자체는 내부 계층(하나의 플롯을 좋게 만드는 것)입니다. figure-composer와 paper-narrative는 다중 패널 및 전체 논문 맥락을 제공합니다.
§1 데이터 충실도 및 자체 일관성
1.1 제외된 행. 소스 데이터에서 제외 또는 플래그가 지정된 것으로 표시된 행은 완전히 생략되거나 시각적으로 구별되는 열린/해치 마커로 그리고 키에 이름을 지정합니다. 포함된 행과 함께 플롯된 요약 통계에 절대 입력되지 않습니다.
1.2 비교 가능한 조건만. 비교 불가능한 조건(다른 N, 에폭 예산, 초기화, 프로토콜)에서 측정된 군은 시각적 피어로 플롯되지 않습니다. 패싯 중단 또는 레이블의 마커로 분리하고 캡션에 차이를 한 번 명시합니다.
1.3 자체 일관성. 그림 내의 모든 키, 임계값 및 제목은 플롯된 모든 행에 의해 충족되어야 합니다. 저장하기 전에 각 범주형 결과 레이블을 정의하는 규칙으로 되추적합니다. 행의 값이 레이블 또는 제목과 모순되면 그림이 잘못된 것이지 데이터가 잘못된 것이 아닙니다.
1.4 주장-제목은 참이어야 합니다. 렌더링 전에 문장 제목(§5.1)이 축의 모든 범주에 대해 테스트됩니다. 어느 하나라도 모순되면 제목을 한정하거나("3/4 쌍에서") 설명으로 격하합니다.
1.5 n과 고정된 내용 명시. 요약 마크를 그리는 모든 패널은 n과 복제 단위를 명시하고, 변수를 고정하는 모든 작은 다중 그래프는 패널 내에(또는 §2 예산이 빠듯한 경우 캡션에) 고정된 값을 명시합니다.
1.6 참조 구조는 참조입니다. _맥락_으로 그려진 트리, 순서 또는 토폴로지(축척 막대, 범주 스트립)는 플롯된 데이터에서 추론된 것이 아니라 확립된 참조를 사용합니다. 구조 자체가 결과인 경우에만 구조를 추론합니다.
1.7 주장당 하나의 숫자. 정량적 주장(런타임, 정확도, 개수)은 모든 패널, 캡션 및 초록에 걸쳐 정확히 하나의 표준 값을 가집니다. 측정하는 대상을 정의하고 해당 값을 모든 곳에서 사용합니다.
§2 레이블 경제성 — 최소 및 최대
그림은 패턴을 보여줍니다. 캡션이 맥락을 전달합니다. 저자가 아닌 일반 과학 독자를 위해 디자인합니다.
2.1 최소 (제거 불가). 모든 개별 마크, 계열, 글리프 또는 비교 대상은 그림만으로 식별 가능해야 합니다. 캡션은 _그것이 중요한 이유_를 설명하고 _그것이 무엇인지_는 설명하지 않습니다. 레이블을 삭제했을 때 독자가 "저게 뭐지?"라고 묻게 되면 제거할 수 없습니다. "왜 저게 거기 있지?"라는 질문이 생기는 경우에만 제거할 수 있습니다. 비교 대상 레이블은 그 자체의 이름("이전 방법", "공동 훈련 없음")을 지정하고, 맨 역할 단어("기준", "이전")를 절대 사용하지 않습니다. 일반 과학자가 구문 분석할 수 없는 용어는 한 단어로 된 설명을 붙입니다.
2.2 최대. 패널당: 제목 + 축 레이블 + 눈금 레이블 + 계열 식별(작은 다중 그래프 행당 한 번 레이블 지정) + 최대 2-3개의 결과 주석. 문자열을 셉니다. 축/눈금을 넘어 6개를 초과하면 과도한 것입니다. 최대값은 서사 주석(콜아웃, 값 레이블, 브래킷)을 계산합니다. 식별 레이블은 예산이 아닌 최소값에 속합니다.
2.3 캡션으로 이동: n=, 고정된 내용, 약어 확장, 비교 불가능 각주, 제외 근거, 방법론적 주의 사항.
2.4 제목은 핵심 내용입니다. 제목만 보고도 독자는 패널이 무엇을 보여주는지 알 수 있습니다. "유전자 드롭아웃에 강건함"은 통과합니다. "더 적은 유전자"는 실패합니다. 테스트: 차갑게 큰 소리로 읽어보십시오. 듣는 사람이 "무엇이 더 적은 유전자인데?"라고 묻는다면 다시 작성하십시오. 한 가지를 변경하는 작은 다중 그래프 행의 경우 패널당 제목을 삭제하고 하나의 행 헤더를 사용합니다.
2.5 마크 위의 값은 헤드라인 숫자에만 사용 — 독자가 인용할 숫자입니다. 다른 모든 것은 축에서 읽습니다.
2.6 의심스러우면 레이블을 삭제하고 다시 읽으십시오. 메시지가 살아남으면 삭제된 상태로 유지합니다.
§3 축, 척도, 작은 다중 그래프
기존 축이 그림 전체 설정과 다른 프레임을 필요로 하는 경우 set_frame(ax, style=...)을 호출합니다.
3.1 축 여백. 축 한계는 모든 면에서 마커 반경 하나 이상만큼 데이터를 비웁니다. 마커와 텍스트는 절대 스파인에 닿지 않습니다. 플롯팅 후 ax.margins(0.04)를 사용하거나 주석 너머로 한계를 확장합니다.
3.2 낭비된 범위에 대한 축 나누기. 데이터가 축의 <40%를 차지하는 경우 축을 나누거나 명확한 0이 아닌 눈금으로 데이터 바닥에서 시작합니다. 나누어진 축 갭 내부에 기준선, 임계값 또는 주석을 절대 그리지 마십시오. 갭에는 좌표가 없습니다.
3.3 로그 축은 사람이 읽을 수 있는 눈금을 사용합니다. — 10², 10³ 또는 1k / 10k / 100k, 원시 지수가 아닙니다. 로그 스케일 값 축에 채워진 막대를 절대 그리지 마십시오(막대 길이는 임의의 바닥에 대한 비율을 인코딩합니다). 대신 점 + 중앙값 눈금을 사용합니다.
3.4 작은 다중 그래프 간 공유 축. 작은 다중 그래프의 행 또는 열은 눈금 레이블을 한 번만 표시합니다(가장 왼쪽/가장 아래쪽 패널). 내부 패널은 눈금을 유지하지만 레이블은 제거합니다. 패널이 y축을 공유하고 x-변수만 다른 경우 하나의 행 헤더 제목으로 인접한 하위 플롯으로 렌더링합니다(wspace≤0.06).
3.5 상자를 채웁니다. 패널의 데이터 엔벨로프는 할당된 직사각형의 ≥75%를 차지합니다. 패널의 자연스러운 종횡비가 데드 밴드를 남기는 경우 그리드 모양을 변경합니다(행 범위, 누적 보완 패널) — 패널을 채우지 마십시오.
3.6 좋은 방향. 더 높거나 낮은 것이 더 나은 것이 축 레이블에서 명확하지 않은 경우 여백에 작은 직립 신호("더 높음 = 더 좋음")를 배치합니다. 패널 행당 한 번, 패널당 절대 안 되며 캡션에만 두지 않습니다. 회전된 텍스트에 내장된 방향성 글리프는 텍스트와 함께 회전합니다. 신호를 직립으로 설정합니다. goodness_arrow(ax, ...)는 이 신호를 배치합니다.
3.7 물리적 너비. 300dpi의 단일 행 그림은 매체의 이중 컬럼 너비에 맞습니다. 개략도 또는 레이블을 추가해도 데이터 패널이 이전보다 좁아지지 않습니다.
§4 색상
4.1 통일성. 색상이 엔터티(방법, 특징, 조건)에 바인딩되면 그림 전체에서 해당 엔터티를 나타내는 모든 마크(선, 채움, 마커, 텍스트, 히트맵 행)에 대해 정확히 동일한 색상을 재사용합니다. 색상 은 상호 참조입니다. 독자는 범례를 두 번 참조할 필요가 없어야 합니다.
4.2 색상 수 제한. 데이터가 필요한 만큼의 고유 색상만 사용합니다. 그림이 초점 시리즈를 다른 것과 비교하는 경우 초점 시리즈를 시각적으로 지배적으로 만들고(채도 높음, 더 무거운 두께) 비교 항목은 시각적 가중치를 낮춥니다(채도 낮음, 더 밝거나 더 얇게). 초점 색상은 동일한 그림에서 사용된 범주형 팔레트의 어떤 색상과도 일치하지 않아야 합니다. 초점 시리즈는 마크 너비가 0이거나 다른 것과 일치하는 경우에도 식별 가능해야 합니다(윤곽선, 마커 또는 밝은 색조 밴드를 통해). focal_palette(...)을 사용하여 초점 및 비교 항목 색상을 정렬된 레이블에 바인딩합니다.
4.3 계층적 범주. 범주가 중첩되는 경우(그룹 내 그룹) 외부 수준은 색상 계열을 선택하고 내부 수준은 그 안에서 샘플링합니다.
4.4 연속형 및 발산형. 일반 연속형 값에는 지각적으로 균일한 순차적 맵을 사용합니다. 순위 또는 크기에는 단일 색조 램프를 사용합니다. 부호 있는 양에는 발산형 맵을 사용합니다. 항상 데이터 중간점이 아닌 의미론적으로 의미 있는 0(0, 1.0 또는 중앙값)에 중심을 맞춥니다.
4.5 CVD 안전. 이진 또는 대립 구분에 적/녹 대비에 절대 의존하지 마십시오. 모든 이진 쌍은 적색맹 시뮬레이션에서도 구별 가능해야 합니다. 오류/이상/교란 마크를 위해 하나의 경보 색상을 예약하고 데이터 시리즈 색상으로 재사용하지 마십시오.
4.6 두 개의 팔레트, 두 개의 범례. 그림이 두 개의 범주형 색상 시스템을 사용하는 경우 각 범례는 해당 팔레트가 적용되는 첫 번째 패널 옆에 위치합니다.
§5 타이포그래피
5.1 문장 제목. 패널 제목은 일반 언어, 일반 굵기, 왼쪽 정렬로 비교를 명시합니다. 메트릭 이름은 제목이 아닌 축에 표시합니다.
5.2 역할 매핑 크기 사다리. 그림은 최대 세 개의 글꼴 크기를 사용하며 공간이 아닌 _역할_에 매핑됩니다: 제목/축-레이블/계열-식별은 기본 크기; 범례/주석 텍스트는 한 단계 아래; 눈금 레이블은 한 단계 더 아래. 패널 문자는 유일한 예외입니다(굵게, 더 크게). 레이블이 해당 역할 크기에 맞지 않으면 레이아웃을 수정하거나 텍스트를 줄이십시오. 중간 크기를 사용하지 마십시오. apply_figure_style(sizes=(8,7,6))은 사다리를 설정합니다. 하나의 보조 메타데이터 라인이 필요한 경우 two_tier_label(name, meta)로 두 줄 텍스트를 만듭니다.
5.3 명명법. 과학적 관례가 이탤릭체로 표기하는 종, 유전자 및 변수 이름은 이탤릭체로 표기합니다. 약어 코드는 규칙을 상속받습니다. 첫 번째 등장 시 한 번 확장합니다.
5.4 크기 접미사. 큰 수는 k / M / B를 사용합니다(4.2B, 120 kb). 쉼표로 구분된 전체 숫자를 사용하지 않습니다.
5.5 숫자 주석. 마크 위의 숫자는 최대 2개의 유효 숫자를 사용합니다. 단, 2-sf 반올림으로 인해 두 개의 다른 행이 동일한 값을 출력하는 경우 이를 구분하는 숫자를 표시합니다. 채워진 마크 위의 텍스트는 ≥4.5:1 대비에 도달합니다. 그렇지 않으면 텍스트를 마크 외부에 배치합니다.
5.6 내부 코드 없음. 축 레이블은 일반 언어 이름을 사용합니다. 코드베이스 약어는 읽을 수 있는 이름 뒤 괄호 안에만 나타나거나 캡션에 나타납니다. 비교 계열은 역할 단어가 아닌 _그것이 무엇인지_로 레이블을 지정합니다.
5.7 패널 문자. 굵게, 왼쪽 상단, 축 상자 외부. 대소문자는 대상 매체의 관례를 따릅니다. panel_letter(ax, 'a', case=...)는 둘 다 처리합니다.
§6 차트 계열 지침 (데이터 형태별)
6.1 범주형 × 숫자형. 요약뿐만 아니라 분포를 표시합니다. 차트 선택은 n을 따릅니다: 작은 n의 경우 중앙값 눈금이 있는 지터링된 스트립; 큰 n의 경우 상자 또는 바이올린; 평균이 메시지인 경우 막대 + 중첩된 원시 점 또는 막대 + 구간. 지터링된 스트립 형식에는 strip_with_median(...)을 사용하고 원시 점 또는 구간이 있는 막대에는 bar_with_points(...)을 사용합니다. errorbar='ci95' 구간은 평균의 t-분포 95% CI입니다(반폭 t_{0.975,n−1}·s/√n). 따라서 작은 n에서도 유효합니다. 오차 막대와 원시 점 오버레이는 대안입니다. 둘 다 표시하는 것은 일반적으로 중복됩니다. 그룹에 없는 범주는 해당 슬롯에 표시됩니다(n.d., — 또는 해치된 고스트). 빈 슬롯은 0으로 읽힙니다. 값이 0인 막대는 기준선에 보이는 스텁 또는 점을 얻습니다.
6.2 단일 관측치 범주. 의미론적 0까지 가는 가는 중립 줄기가 있는 채워진 점(롤리팝). 값 레이블은 점 옆에 위치합니다.
그룹화된 플롯팅 헬퍼는 제공된 모든 그룹에서 비어 있지 않고, 1차원이며, 유한한 실수 관측치를 필요로 합니다. 그리기 전에 빈 그룹과 NaN/Inf를 거부합니다. 제외 사항을 명시적으로 해결하고, 유지된 n을 보고하며, 적절한 경우 별도로 누락된 범주 마커를 추가합니다. 누락된 관측치를 조용히 삭제하지 않습니다. 제외된 관측치가 있는 마스킹된 배열은 변환 전에 거부됩니다. 마스킹된 항목이 없는 배열은 유효합니다. 요청된 SD/CI 구간은 그룹당 최소 두 개의 관측치가 필요합니다. 단일 관측치의 경우 구간 없이 점을 사용합니다. 레이블과 데이터 그룹이 정렬되어야 합니다. strip_with_median의 경우 비어 있지 않은 색상 시퀀스가 순환합니다. None 또는 빈 시퀀스는 기본 회색을 사용합니다. 빈 막대 색상 시퀀스는 Matplotlib의 기본 막대 색상을 사용합니다. 빈 focal_palette 기본 시퀀스는 기본 색상 순환을 사용합니다.
6.3 연속형 시리즈. 마커가 있는 선으로 x당 평균; 개별 실행은 그 뒤에 가는 반투명 선 또는 점으로 표시합니다. 각 시리즈는 범례 상자보다 선 오른쪽 끝에 직접 텍스트로 레이블을 지정합니다. end_of_line_labels(...)는 이러한 레이블을 배치합니다. 요약 글리프(구간별 평균/중앙값)는 원시 관측치로 오인될 수 없는 모양을 사용하며, 모든 시리즈에 걸쳐 동일하며, z-순서에서 원시 점 아래에 그려집니다.
end_of_line_labels는 레이블을 추가하기 전에 시리즈/레이블 수와 비어 있지 않은 일치하는 x/y 길이의 유효성을 검사합니다. 끝점은 유한해야 합니다. 내부 간격은 남아 있을 수 있습니다. 전체 시리즈를 복사하지 않고 각 인덱스 시퀀스의 끝에 액세스합니다. 비어 있지 않은 색상 시퀀스가 순환합니다. None 또는 빈 시퀀스는 현재 기본 텍스트 색상을 사용합니다. panel_crops의 경우 패널 문자는 고유해야 합니다.
6.4 공유된 지지 위의 분포. 두 분포가 많이 겹치는 경우 공유된 x축이 있는 작은 패널로 쌓거나 능선형(ridgeline)을 사용합니다. 분리가 시각적으로 명확한 경우에만 중첩합니다.
6.5 행렬. 히트맵이 읽을 수 있을 정도로 작은 경우(~ < 200 셀) 모든 셀에 값을 인쇄합니다. 컬러바 레이블에 임계값을 한 번 명시합니다.
6.6 임베딩. 차원 축소 산점도(UMAP, t-SNE, PCA)는 눈금과 눈금 레이블을 제거합니다. 작은 모서리 화살표 쌍이 축 이름을 지정합니다. 클러스터는 주변 공백에 있는 텍스트로 가는 가는 리더 선으로 레이블이 지정됩니다.
6.7 쌍을 이룬 예측 대 관측치. 동일한 x 및 색상으로 인접한 트랙으로 둘을 쌓습니다. 정렬이 비교를 전달하도록 합니다.
…
[번역이 잘린 부분]
참고: 이 스킬은
figure-composer및paper-narrative와 함께 사용하기 위한 내부 계층입니다. 개별 그림의 품질에 초점을 맞추며, 다중 패널 구성 및 전체 논문 수준의 내러티브는 해당 스킬에서 처리됩니다.