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.
- Lesen Sie
catalog/INDEX.md— 135 Gruppen, jede eine Disziplin oder Diagrammfamilie, mit ihrem Nummernbereich. - 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.
- 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)
- Obere und rechte Achsenspinen verstecken; Spinen dünn (
0.8) und dunkelgrau (#333) halten, nicht schwarz. - 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.
- Gedeckt-gesättigte Palettenpaare (teal/rust, blue/red) – niemals primäre RGB-Farben.
- Marginale Dichten oder Histogramme zu Streudiagrammen hinzufügen, wenn der Platz es erlaubt.
- Statistiken in einer abgerundeten weißen Box mit dünnem Rand annotieren; Schwellenwerttext in der Akzentfarbe.
- Dichte Multi-Panel-Raster mit
tight_layout(h_pad, w_pad); die Legende teilen. - Export mit 300 dpi und
bbox_inches="tight"(vonsavefigü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 mitnew_figure.py, Ausführen der Qualitätstests.SKILL.mdbeantwortet welche Abbildung;WORKFLOW.mdbeantwortet wie man sie verwendet.scripts/reference.md— die vollständigepubstyle-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.