Community이미지github.com

wxx827/scientific-figures

1219개의 즉시 실행 가능한 matplotlib 생성기로, 게재 가능한 수준의 과학적 그래프를 Times New Roman 디자인 시스템으로 제작합니다. 메트릭 호환 대체 폰트, 타이포그래피 린터, 14종 차트 유형의 자동 데이터 플로팅을 포함합니다.

scientific-figures란 무엇인가요?

이 스킬은 1219개의 독립적인 matplotlib 스크립트를 제공하여, 고가 저널 스타일의 과학적 그래프를 즉시 생성합니다. 각 스크립트는 자체 합성 데이터로 작동하며, Times New Roman 폰트, 얇은 축, muted-saturated 팔레트, 300dpi PNG 출력을 일관되게 적용합니다. 통계 차트(임계 회귀, 레인클라우드, 리지라인, 클러스터맵, UpSet, Manhattan 등), 지리공간 매핑, ML/SHAP 해석, 생물-오믹스, 기후, 물리/공학, 임상 시험, 화학/재료, 베이지안/MCMC, 신호 처리, UAV/로봇 경로 계획, 원격 탐사, 전력 시스템, 생태학, 천문학, 컴퓨터 비전, 3D 시각화, 생성 모델 등 다양한 분야를 포괄합니다. 공유 스타일 모듈 `pubstyle.py`를 통해 일관된 디자인 시스템을 적용하며, `check_typography.py`로 PDF에 포함된 실제 폰트를 검증합니다. 실제 데이터 적용은 `plot_data.py`를 통해 CSV/Excel 파일에서 직접 14종 차트를 생성할 수 있으며, 기존 스크립트 수정 시 `--contract`로 데이터 위치를 파악합니다.

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

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

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

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

문서

Scientific Figures (게재 가능 수준)

1219개의 즉시 실행 가능한 matplotlib 생성기(번호 0-1218)로, 고가 저널의 그래프 미적 스타일을 재현합니다: 전체에 Times New Roman 사용, 얇고 어두운 축선, muted-saturated 팔레트, 조밀한 멀티패널 그리드, 임계값 및 메트릭 주석, 마진 밀도, 300dpi 내보내기.

모든 스크립트는 자체 완결적입니다. 인수 없이 실행되며, 자체 합성 데이터를 생성하고, 번호를 이름으로 한 PNG를 output/ 디렉토리에 기록합니다.

cd scripts
python fig_threshold_regression.py     # -> output/01_threshold_regression.png

적절한 그래프 찾기

차트 이름을 찾기 위해 이 파일을 처음부터 읽지 마십시오. 카탈로그는 필요한 부분만 로드할 수 있도록 분할되어 있습니다.

  1. catalog/INDEX.md를 읽으십시오 — 135개 그룹, 각각 학문 분야 또는 차트 계열, 번호 범위 포함.
  2. 일치하는 그룹 파일 하나만 읽으십시오. 각 파일은 해당 범위의 모든 그래프와 그 내용 및 사용 시기를 나열합니다.
  3. 해당 스크립트를 읽고 적응시키십시오.

차트 이름을 이미 알고 있다면 인덱스를 건너뛰고 모든 그룹을 검색하십시오:

grep -ril "sankey" catalog/
grep -ril "생존 곡선\|kaplan" catalog/

그래프를 실행하기 전에 모양을 보려면 reference/thumbs/<번호>_<이름>.jpg를 여십시오 — 1219개 모두 축소되어 있습니다. reference/curated/에는 33개가 전체 해상도로 있습니다.

카탈로그에 맞는 것이 없으면 범용 그룹(0-54)부터 시작하십시오: 분포, 상관관계, 회귀, 순위, 구성 및 시계열로, 모든 학문 분야에서 사용할 수 있는 형태입니다.

폰트: 첫 실행 전에 읽으십시오

기본 폰트는 Times New Roman입니다. 이는 독점 폰트이며 번들로 제공되지 않습니다. 대신 fonts/에는 Tinos(SIL OFL 라이선스)가 포함되어 있으며, 이는 바이트 단위로 동일한 전각 너비를 가지므로 실제 폰트 유무와 관계없이 그래프가 동일하게 배치됩니다. 출력을 신뢰하기 전에 스택이 올바르게 해결되는지 확인하십시오:

cd scripts
python check_typography.py --metrics
#   vs Tinos              identical    (Tinos-Regular.ttf)

matplotlib이 DejaVu로 폴백하면 set_pub_style()은 조용히 저하되지 않고 오류를 발생시킵니다 — 잘못된 서체는 모든 PNG 기반 검사에서 보이지 않습니다. 자세한 내용은 fonts/README.md를 참조하십시오.

요구 사항

matplotlib>=3.6 및 numpy는 모든 그래프에 필요합니다. scipy, pandas, seaborn, scikit-learn, openpyxl, Pillow는 라이브러리 및 도구의 하위 집합에 필요합니다. 3.6 바닥은 중요합니다: 글리프 단위 폰트 폴백 덕분에 중국어 레이블이 송 서체를 사용하면서 숫자는 Times로 유지됩니다.

pip install -r requirements.txt

공유 스타일: scripts/pubstyle.py

새 그래프에서 이 모듈을 임포트하여 미적 스타일을 일치시키십시오:

from pubstyle import (set_pub_style, PALETTES, savefig, style_axes,
                      panel_title, add_figure_header, header_height,
                      panel_labels_inches)

set_pub_style()                       # rcParams를 한 번 적용하고 직접 수정하지 마십시오
fig, axes = ...                       # 그래프 구성
panel_title(axes[0], "시간에 따른 드리프트 크기")

head = header_height(fig, subtitle=True)
fig.tight_layout(rect=[0, 0.03, 1, 1 - head / fig.get_size_inches()[1]])
add_figure_header(fig,
                  "루프 폐쇄가 무제한 드리프트를 제거합니다",   # 결론
                  subtitle="n = 240 궤적, 8 시퀀스")
panel_labels_inches(fig, axes)        # (a) (b) (c) 동일한 인치 오프셋

savefig(fig, "my_fig.png")            # 300 dpi로 output/에 저장

크기는 pubstyle.TYPE_SCALE에서 가져오므로, 이러한 도우미가 대신 처리할 때 fontsize=를 전달하지 마십시오. PALETTES의 주요 팔레트: teal_rust, blue_red, greens, earth, div_rdbu, pastel4, zones, 색맹 안전 cb_* 램프. matplotlib 기본값 대신 이를 재사용하십시오 — 그래프를 고급스럽게 보이게 만드는 요소입니다.

scripts/figkit.py는 보조 구성 레이어입니다: 확대 삽입, 텍스트 카드, 인치 기반 축, 레이블 중복 방지 배치.

실제 데이터에 적응

데이터가 테이블인 경우 이 스크립트에서 시작하지 마십시오. 대신 전면 도구를 사용하여 전체 디자인 시스템을 파일에 적용하십시오:

cd scripts
python plot_data.py --data yours.csv --describe    # 무엇을 그릴 수 있습니까?
python plot_data.py --data yours.csv --kind scatter_fit --x a --y b --group g

14종 차트, 인코딩 및 구분 기호 감지, "1,234" 및 "12.5%"를 숫자로 강제 변환, 중국어 열 이름에 대한 자동 CJK 폰트 선택, .xlsx 및 .csv 지원.

1219개 생성기 중 하나를 적응시키려면 먼저 데이터 위치를 파악하십시오:

python plot_data.py --contract fig_threshold_regression.py

스크립트는 이에 대해 균일하지 않습니다. 1219개 중 19개는 gen_data() 함수에 데이터를 격리하고, 299개는 먼저 읽어야 하는 다른 명명된 함수에 데이터를 유지하며, 656개는 main() 내부에 인라인으로 데이터를 구성하고, 245개는 대체 가능한 데이터가 전혀 없습니다. 그림 자체가 모델이기 때문입니다(Kaimal 스펙트럼, Kalman 필터, 합성 현미경 장면 등). --contract 보고서는 해당 경우를 알려주고 변경할 가치가 있는 상수를 명명합니다.

어느 것을 편집하든, 플로팅 및 스타일링 코드는 유지하십시오. 스타일링이 중요한 부분입니다. matplotlib 기본값으로 다시 작성하지 마십시오.

미적 규칙 (고급스러워 보이게 만드는 요소)

  1. 위쪽과 오른쪽 축선을 숨깁니다. 축선은 얇게(0.8) 유지하고 검정이 아닌 진회색(#333)으로 유지합니다.
  2. 전체에 Times New Roman 사용, 작은 크기(본문 7-9pt, 최소 6.0pt), 굵게는 그림 제목, 패널 문자 및 패널 제목에만 사용합니다.
  3. Muted-saturated 팔레트 쌍(틸/러스트, 파랑/빨강) — 기본 RGB는 사용하지 않습니다.
  4. 산점도에 공간이 허락되면 마진 밀도 또는 히스토그램을 추가합니다.
  5. 통계를 둥근 흰색 상자에 얇은 테두리로 주석 처리합니다. 임계값 텍스트는 악센트 색상으로 배치합니다.
  6. tight_layout(h_pad, w_pad)로 조밀한 멀티패널 그리드를 구성합니다. 범례를 공유합니다.
  7. bbox_inches="tight"로 300dpi 내보내기(savefig에서 처리).

DESIGN_SYSTEM.md에는 각 규칙의 강제 숫자가 있습니다.

검증

output/의 PNG를 열고 요청과 비교하십시오. 패널이 비좁으면 figsize 또는 h_pad/w_pad를 높이고, 색상이 충돌하면 단일 PALETTES 항목으로 전환하십시오.

PNG를 읽어도 사용된 서체를 알 수 없습니다. PNG는 폰트 메타데이터를 저장하지 않기 때문입니다. 타이포그래피 감사도 실행하십시오 — PDF로 렌더링하고 렌더러가 포함한 폰트를 읽습니다:

cd scripts
python check_typography.py              # 오류가 0이어야 함
python check_figures.py --jobs 8        # 모든 항목 실행, 모든 PNG 감사
python run_all.py --parallel 8          # 1219개 모두 재구축 (약 15분 소요)
python run_all.py --range 173-192       # 원격 탐사 블록만
python run_all.py --parallel 8 --vector # 모든 PNG 옆에 PDF, 제출용

관련 문서

  • catalog/INDEX.md — 135개 그룹 및 번호 범위.
  • DESIGN_SYSTEM.md — 그래프 간 시각적 표준(캔버스 크기, 팔레트, 서체 크기, 간격, 금지된 컬러맵). 새 그래프를 작성하거나 기존 그래프를 편집하기 전에 읽으십시오.
  • WORKFLOW.md — 운영 매뉴얼: 생성기 선택, 실제 데이터 교체, new_figure.py로 새 그래프 구성, 품질 게이트 실행. SKILL.md는 어떤 그래프에 답하고, WORKFLOW.md는 사용 방법에 답합니다.
  • scripts/reference.md — 전체 pubstyle API.
  • fonts/README.md — 폰트가 여기에 포함된 이유, 어떤 폰트인지, 어떤 라이선스 하에 있는지.
  • NUMBER_REGISTRY.md — 어떤 번호 범위가 사용되었는지. 새 그래프는 1219에서 시작합니다.

관련 스킬