CommunityBildgithub.com

wxx827/scientific-figures

1219 sofort ausführbare matplotlib-Generatoren für publikationsreife wissenschaftliche Abbildungen mit einem einheitlichen Times-New-Roman-Designsystem, gebündelter metrisch kompatibler Ersatzschriftart und einem Typografie-Linter, der die tatsächlich im PDF eingebetteten Schriftarten prüft.

Was ist scientific-figures?

Dieses Skill bietet eine umfangreiche Bibliothek von 1219 eigenständigen matplotlib-Skripten (nummeriert 0–1218), die wissenschaftliche Abbildungen in Publikationsqualität erzeugen. Jedes Skript ist komplett autark: Es generiert eigene synthetische Daten, benötigt keine Kommandozeilenargumente und speichert das Ergebnis als PNG im `output/`-Verzeichnis. Die Abbildungen folgen einem strengen Designsystem mit Times New Roman als Standardschriftart (alternativ wird die metrisch identische Schriftart Tinos mitgeliefert), dezenten Farbpaletten, dünnen dunklen Achsenspinen und einer Auflösung von 300 dpi. Der Katalog deckt über 135 Themenbereiche ab, darunter statistische Diagramme (z.B. Threshold Regression, Raincloud, Ridgeline, Volcano, Manhattan), georäumliche Kartierung, ML und SHAP-Interpretation, Bio-Omics, Klima, Bayes/MCMC-Diagnostik, Robotik, Fernerkundung und viele mehr. Besonders wertvoll ist die integrierte Typografieprüfung: Sie rendert eine PDF und extrahiert die tatsächlich eingebetteten Schriftarten, um sicherzustellen, dass die gewünschte Schriftart verwendet wurde – ein Mangel, den reine PNG-Kontrollen nicht erkennen. Das Skill wird über eine Katalogstruktur erschlossen (`catalog/INDEX.md` mit 135 Gruppen), und die gemeinsame Stilbibliothek `pubstyle.py` ermöglicht es, neue Abbildungen im gleichen Look zu erstellen. Zusätzlich gibt es einen Frontend-Einstieg `plot_data.py`, der reale Datentabellen in 14 Diagrammtypen umwandelt, ohne dass man die Generatoren direkt bearbeiten muss.

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

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Wissenschaftliche Abbildungen (Publikationsqualität)

1219 sofort ausführbare matplotlib-Generatoren, nummeriert 0-1218, die die Ästhetik teurer Fachzeitschriften nachbilden: durchgängig Times New Roman, dünne dunkle Achsenspinen, gedeckte bis gesättigte Paletten, kompakte Multi-Panel-Raster, Schwellenwert- und Metrikannotationen, marginale Dichten, Export mit 300 dpi.

Jedes Skript ist autark. Es läuft ohne Argumente, erzeugt eigene synthetische Daten und schreibt ein PNG in output/, benannt nach seiner Nummer.

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

Die richtige Abbildung finden

Lesen Sie nicht diese Datei auf der Suche nach einem Diagrammnamen; der Katalog ist so aufgeteilt, dass Sie nur das laden, was Sie brauchen.

  1. Lesen Sie catalog/INDEX.md — 135 Gruppen, jede eine Disziplin oder Diagrammfamilie, mit ihrem Nummernbereich.
  2. Lesen Sie die eine Gruppendatei, die passt. Jede listet jede Abbildung in ihrem Bereich auf, mit dem, was sie zeichnet und wann sie verwendet wird.
  3. Lesen Sie das Skript, bevor Sie es anpassen.

Wenn der Diagrammname bereits bekannt ist, überspringen Sie den Index und durchsuchen Sie alle Gruppen:

grep -ril "sankey" catalog/
grep -ril "生存曲线\|kaplan" catalog/

Um zu sehen, wie eine Abbildung aussieht, bevor Sie sie ausführen, öffnen Sie reference/thumbs/<number>_<name>.jpg — alle 1219 sind dort in verkleinerter Form vorhanden. reference/curated/ enthält 33 davon in voller Auflösung.

Wenn nichts im Katalog passt, beginnen Sie mit der allgemeinen Gruppe (0-54): Verteilungen, Korrelation, Regression, Rangfolge, Zusammensetzung und Zeitreihen, in einer Form, die jede Disziplin übernehmen kann.

Schriftarten: Lesen Sie dies vor Ihrem ersten Durchlauf

Die Hausschrift ist Times New Roman. Sie ist proprietär und wird nicht mitgeliefert; fonts/ enthält stattdessen Tinos (SIL OFL), das byteidentische Vorausbreiten hat, sodass eine Abbildung gleich aussieht, ob die Maschine nun die echte Schriftart hat oder nicht. Bestätigen Sie die Auflösung des Stapels, bevor Sie einer Ausgabe vertrauen:

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

Falls matplotlib jemals auf DejaVu zurückfällt, wirft set_pub_style() einen Fehler, anstatt leise zu degradieren – eine falsche Schriftart ist für jede PNG-basierte Prüfung unsichtbar. Details in fonts/README.md.

Anforderungen

matplotlib>=3.6 und numpy werden von jeder Abbildung benötigt; scipy, pandas, seaborn, scikit-learn, openpyxl und Pillow von Teilmengen der Bibliothek und den Werkzeugen. Die Untergrenze von 3.6 ist wichtig: Der zeichenweise Schriftarten-Fallback ermöglicht es, dass eine chinesische Beschriftung eine Song-Schriftart verwendet, während die Ziffern in Times bleiben.

pip install -r requirements.txt

Der gemeinsame Stil: scripts/pubstyle.py

Importieren Sie dies in jede neue Abbildung, um die Ästhetik zu übernehmen:

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

set_pub_style()                       # rcParams einmal anwenden; niemals selbst ändern
fig, axes = ...                       # Ihre Abbildung bauen
panel_title(axes[0], "Drift magnitude over time")

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,
                  "Loop closure removes unbounded drift",   # die Schlussfolgerung
                  subtitle="n = 240 trajectories, 8 sequences")
panel_labels_inches(fig, axes)        # (a) (b) (c) in gleichen Zollabständen

savefig(fig, "my_fig.png")            # 300 dpi nach output/

Größen stammen aus pubstyle.TYPE_SCALE, übergeben Sie also kein fontsize=, wenn einer dieser Helfer dies für Sie erledigt. Wichtige Paletten in PALETTES: teal_rust, blue_red, greens, earth, div_rdbu, pastel4, zones, plus die farbblindsicheren cb_*-Verläufe. Verwenden Sie diese anstelle der matplotlib-Standardeinstellungen – sie sorgen dafür, dass die Abbildungen teuer aussehen.

scripts/figkit.py ist die begleitende Konstruktionsebene: Zoom-Ausschnitte, Textkarten, zollbasierte Achsen, überschneidungsfreie Beschriftung.

Anpassung an echte Daten

Wenn die Daten eine Tabelle sind, beginnen Sie nicht mit diesen Skripten. Nutzen Sie stattdessen den direkten Einstieg, der das gesamte Designsystem auf eine Datei anwendet:

cd scripts
python plot_data.py --data yours.csv --describe    # Was kann ich zeichnen?
python plot_data.py --data yours.csv --kind scatter_fit --x a --y b --group g

Vierzehn Diagrammarten, Codierungs- und Trennzeichenerkennung, "1,234" und "12.5%" werden zurück in Zahlen umgewandelt, automatische CJK-Schriftartenauswahl für chinesische Spaltennamen und sowohl .xlsx als auch .csv.

Um einen der 1219 Generatoren anzupassen, finden Sie zunächst heraus, wo seine Daten leben:

python plot_data.py --contract fig_threshold_regression.py

Die Skripte sind hier nicht einheitlich. 19 der 1219 isolieren ihre Daten in einer gen_data()-Funktion, 299 behalten sie in einer anderen benannten Funktion, die zuerst gelesen werden muss, 656 bauen sie inline in main() auf, und 245 haben überhaupt keine austauschbaren Daten, weil die Abbildung ein Modell ist – ein Kaimal-Spektrum, ein Kalman-Filter, eine synthetische Mikroskopieszene. Der --contract-Bericht sagt, welcher Fall zutrifft, und nennt die Konstanten, die sich zu ändern lohnen.

Was auch immer bearbeitet wird, behalten Sie den Plot- und Styling-Code. Das Styling ist der wertvolle Teil; schreiben Sie ihn nicht mit matplotlib-Standardeinstellungen neu.

Ästhetische Regeln (was diese teuer aussehen lässt)

  1. Obere und rechte Achsenspinen verstecken; Spinen dünn (0.8) und dunkelgrau (#333) halten, nicht schwarz.
  2. Durchgängig Times New Roman, klein (7-9 pt Fließtext, 6.0 pt harte Untergrenze), fett nur für den Abbildungstitel, Panelbuchstaben und Paneltitel.
  3. Gedeckt-gesättigte Palettenpaare (teal/rust, blue/red) – niemals primäre RGB-Farben.
  4. Marginale Dichten oder Histogramme zu Streudiagrammen hinzufügen, wenn der Platz es erlaubt.
  5. Statistiken in einer abgerundeten weißen Box mit dünnem Rand annotieren; Schwellenwerttext in der Akzentfarbe.
  6. Dichte Multi-Panel-Raster mit tight_layout(h_pad, w_pad); die Legende teilen.
  7. Export mit 300 dpi und bbox_inches="tight" (von savefig übernommen).

DESIGN_SYSTEM.md enthält die festgelegten Zahlen hinter jeder Regel.

Überprüfung

Öffnen Sie das PNG in output/ und vergleichen Sie es mit der Anforderung. Wenn ein Panel zu eng ist, erhöhen Sie figsize oder h_pad/w_pad; wenn Farben kollidieren, wechseln Sie zu einem einzelnen PALETTES-Eintrag.

Das PNG-Lesen kann nicht verraten, welche Schriftart verwendet wurde, da ein PNG keine Schriftmetadaten speichert. Führen Sie auch die Typografieprüfung durch – sie rendert in PDF und liest die Schriftarten, die der Renderer eingebettet hat:

cd scripts
python check_typography.py              # Fehler müssen null sein
python check_figures.py --jobs 8        # alles ausführen, jedes PNG prüfen
python run_all.py --parallel 8          # alle 1219 neu erstellen (ca. 15 Minuten)
python run_all.py --range 173-192       # nur den Fernerkundungsblock
python run_all.py --parallel 8 --vector # PDF neben jedem PNG, für die Einreichung

Verwandte Dokumente

  • catalog/INDEX.md — die 135 Gruppen und ihre Nummernbereiche.
  • DESIGN_SYSTEM.md — der abbildungsübergreifende visuelle Standard (Leinwandgrößen, Paletten, Schriftskala, Abstände, verbotene Farbskalen). Lesen Sie dies, bevor Sie eine neue Abbildung schreiben oder eine vorhandene bearbeiten.
  • WORKFLOW.md — das Betriebshandbuch: Auswahl eines Generators, Austausch gegen echte Daten, Erstellen einer neuen Abbildung mit new_figure.py, Ausführen der Qualitätstests. SKILL.md beantwortet welche Abbildung; WORKFLOW.md beantwortet wie man sie verwendet.
  • scripts/reference.md — die vollständige pubstyle-API.
  • fonts/README.md — warum hier eine Schriftart mitgeliefert wird, welche und unter welcher Lizenz.
  • NUMBER_REGISTRY.md — welche Nummernbereiche belegt sind. Neue Abbildungen beginnen bei 1219.

Verwandte Skills