CommunityBildgithub.com

aipoch/figure-style

Regeln für korrekte, lesbare und konsistente wissenschaftliche Abbildungen in Publikationsqualität – für finale Abbildungen in Berichten, Papieren oder Exporten. Deckt Datenintegrität, Labelökonomie, Farbabstimmung, Diagrammauswahl, Layout und Qualitätssicherung ab, ohne einen visuellen Hausstil vorzugeben.

Was ist figure-style?

Dieses Skill definiert umfassende Regeln für wissenschaftliche Abbildungen in Publikationsqualität. Es ist für finale, auslieferungsreife Abbildungen gedacht – nicht für explorative oder Zwischenplots. Der Fokus liegt auf Korrektheit, Lesbarkeit und interner Konsistenz, ohne einen festen visuellen Hausstil (Schriftart, Farbpalette) vorzugeben. Das Skill wird durch einen Notebook-Aufruf mit `apply_figure_style()` aktiviert und deklt Regeln in neun Kategorien: Datenintegrität und Selbstkonsistenz, Label-Ökonomie, Achsen und Skalierung, Farbe, Typografie sowie diagrammspezifische Anleitungen. Es lässt sich mit anderen Skills wie `figure-composer` für mehrteilige Abbildungen oder `paper-narrative` für das gesamte Papier kombinieren und betont die Überprüfung von Behauptungen, die Vermeidung von Redundanz und die Barrierefreiheit (CVD-Sicherheit).

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aipoch/open-science/tree/HEAD/resources/skills/figure-style

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

Regeln für Abbildungen in Publikationsqualität

Eine Checkliste für korrekte, lesbare, intern konsistente wissenschaftliche Abbildungen. Dieses Skill gibt keinen visuellen Hausstil vor – Rahmen, Schriftart und Palette sind Parameter. Rufen Sie vor dem Plotten den folgenden Notebook-Aufruf auf und verwenden Sie apply_figure_style().

Open-Science-Notebook-Aufruf

Jede notebook_execute-Anfrage, deren code eine in diesem Skill benannte Funktion verwendet, enthält diese Skill-ID:

{ "kernelSkillIds": ["figure-style"], "code": "apply_figure_style()\n..." }

kernelSkillIds enthält die Skill-ID; Funktionsaufrufe gehören in code. Diese Anfrage ist wie geschrieben vollständig: Rufen Sie die genannten Funktionen direkt auf und fügen Sie keinen Import- oder Erkennungsschritt hinzu.

§0 Geltungsbereich

Auslöser (gleiche Regel wie der Abschnitt „Plots in Publikationsqualität" im System-Prompt): Dieses Skill ist für finale Abbildungen – solche, die in einem Bericht, Papier oder Export erscheinen oder als Artefakt gespeichert werden, das der Benutzer behält – nicht für explorative/Zwischenplots (Schnellansichten, EDA, Plausibilitätsprüfungen), die einfach ohne dieses Skill gezeichnet werden. Nach dem Laden bedeutet „jeder Plot" unten jeden Plot, den Sie für das auszuliefernde Artefakt rendern.

§1–§3, §8 und §9 sind Korrektheit – sie gelten für jeden Plot, in jedem Kontext, und haben keinen ästhetischen Inhalt. §4–§7 sind Hinweise – Voreinstellungen, die ein sauberes Ergebnis liefern, die aber von einer bewussten Alternative überschrieben werden können (einzelne Regeln innerhalb §4–§7, die eine sachliche/wahrnehmungsbezogene Invariante angeben – z. B. §4.4 semantische Nullzentrierung, §4.5 CVD, §6.9 Ankerlinien – sind dennoch bindend). Für sich allein genommen ist dieses Skill die innere Ebene (einen einzelnen Plot gut machen); figure-composer und paper-narrative liefern den Kontext für mehrere Panels bzw. das gesamte Papier.


§1 Datenintegrität & Selbstkonsistenz

1.1 Ausgeschlossene Zeilen. Eine Zeile, die in den Quelldaten als ausgeschlossen oder markiert gekennzeichnet ist, wird entweder vollständig weggelassen oder mit einem visuell unterscheidbaren offenen/gestreiften Marker gezeichnet und in der Legende benannt. Sie geht niemals in eine zusammenfassende Statistik ein, die zusammen mit den eingeschlossenen Zeilen geplottet wird.

1.2 Nur vergleichbare Bedingungen. Arme, die unter nicht vergleichbaren Bedingungen gemessen wurden (unterschiedliches N, Epochen-Budget, Initialisierung, Protokoll), werden nicht als visuelle Gleichrangige geplottet. Trennen Sie sie durch einen Facettenbruch oder einen Marker auf dem Label und geben Sie den Unterschied einmal in der Bildunterschrift an.

1.3 Selbstkonsistenz. Jeder Schlüssel, Schwellenwert und Titel innerhalb der Abbildung muss von jeder geplotteten Zeile erfüllt werden. Gehen Sie vor dem Speichern jedes kategoriale Ergebnislabel zurück zu der Regel, die es definiert; wenn der Wert einer Zeile ihrem Label oder dem Titel widerspricht, ist die Abbildung falsch, nicht die Daten.

1.4 Behauptungstitel müssen wahr sein. Ein Satz-Titel (§5.1) wird vor dem Rendern gegen jede Kategorie auf der Achse getestet. Wenn ein Wert widerspricht, qualifizieren Sie den Titel („bei 3 von 4 Paaren") oder stufen Sie ihn zu einer Beschreibung herab.

1.5 n und Fixierung angeben. Jedes Panel, das eine zusammenfassende Markierung zeichnet, gibt n und die Replikationseinheit an, und jedes Small-Multiple, das eine Variable fixiert hält, gibt den fixierten Wert an – im Panel oder, wenn das Budget in §2 knapp ist, in der Bildunterschrift.

1.6 Referenzstruktur ist Referenz. Ein Baum, eine Anordnung oder Topologie, die als Kontext gezeichnet wird (ein Maßstabsbalken, ein Kategorienstreifen), verwendet eine etablierte Referenz, keine aus den geplotteten Daten abgeleitete. Leiten Sie die Struktur nur ab, wenn die Struktur das Ergebnis ist.

1.7 Eine Zahl pro Behauptung. Eine quantitative Behauptung (Laufzeit, Genauigkeit, Anzahl) hat genau einen kanonischen Wert über alle Panels, Bildunterschriften und das Abstract hinweg. Definieren Sie, was sie misst, und verwenden Sie diesen Wert überall.


§2 Labelökonomie – Unter- und Obergrenze

Die Abbildung zeigt das Muster; die Bildunterschrift trägt den Kontext. Gestalten Sie für einen allgemeinen wissenschaftlichen Leser, nicht für den Autor.

2.1 Untergrenze (nicht entfernbar). Jede einzelne Markierung, Serie, Glyphe oder Referenz muss allein aus der Abbildung identifizierbar sein. Die Bildunterschrift erklärt warum sie wichtig ist, nicht was sie ist. Ein Label ist nicht entfernbar, wenn das Löschen einen Leser fragen lässt: „Was ist das?"; es ist nur entfernbar, wenn die Frage wird: „Warum ist das da?“. Referenzlabels benennen die Sache („vorherige Methode", „kein gemeinsames Training"), niemals ein bloßes Rollenwort („Basislinie", „vorheriger"). Jeder Begriff, den ein allgemeiner Wissenschaftler nicht parsen kann, erhält einen Ein-Wort-Kommentar.

2.2 Obergrenze. Pro Panel: Titel + Achsenbeschriftungen + Tick-Labels + Serienidentität (einmal pro Zeile in Small Multiples) + höchstens 2–3 Ergebnisanmerkungen. Zählen Sie die Zeichenketten; >6 über Achsen/Ticks hinaus bedeutet Überlast. Die Obergrenze zählt narrative Anmerkungen (Hinweise, Wertelabels, Klammern) – Identitätslabels sind Untergrenze, nicht Budget.

2.3 In die Bildunterschrift verschieben: n=, was fixiert ist, Abkürzungserweiterungen, Fußnoten zu nicht vergleichbaren Daten, Ausschlussbegründung, methodische Einschränkungen.

2.4 Titel sind Kernaussagen. Ein Leser, der nur den Titel sieht, weiß, was das Panel zeigt. „Robust gegenüber Genverlust" ist in Ordnung; „Weniger Gene" nicht. Test: Lesen Sie ihn kalt vor – wenn der Zuhörer fragt: „Weniger Gene was?", schreiben Sie um. Entfernen Sie bei einer Reihe von Small Multiples, die eine Sache variieren, die einzelnen Panel-Titel zugunsten eines Zeilenkopfs.

2.5 Wert-auf-Markierung nur für die Schlagzeilenzahl – diejenige, die ein Leser zitieren würde. Alles andere wird von der Achse abgelesen.

2.6 Im Zweifelsfall löschen Sie das Label und lesen Sie erneut. Wenn die Botschaft erhalten bleibt, bleibt es gelöscht.


§3 Achsen, Skalen, Small Multiples

Wenn eine vorhandene Achse einen anderen Rahmen als die figurenweite Einstellung benötigt, rufen Sie set_frame(ax, style=...) auf.

3.1 Achsenabstand. Achsengrenzen lassen auf jeder Seite einen Abstand von ≥ einem Markerradius zu den Daten; Marker und Text berühren niemals eine Achsenlinie. ax.margins(0,04) nach dem Plotten oder erweitern Sie die Grenze über jede Anmerkung hinaus.

3.2 Achsenbrüche über verschwendetem Bereich. Wenn Daten <40 % einer Achse belegen, brechen Sie die Achse oder beginnen Sie sie am Datenboden mit einer klaren Nicht-Null-Tick-Marke. Zeichnen Sie niemals eine Referenzlinie, einen Schwellenwert oder eine Anmerkung innerhalb einer Achsenbruchlücke – die Lücke hat keine Koordinate.

3.3 Log-Achsen erhalten menschenlesbare Ticks – 10², 10³ oder 1k / 10k / 100k, keine rohen Exponenten. Zeichnen Sie niemals gefüllte Balken auf einer logarithmisch skalierten Wertachse (Balkenlänge kodiert das Verhältnis zu einem willkürlichen Boden); verwenden Sie stattdessen Punkte + Median-Tick.

3.4 Gemeinsame Achsen über Small Multiples hinweg. Eine Zeile oder Spalte von Small Multiples zeigt Tick-Labels einmal (links-/unterstes Panel); innere Panels behalten Ticks, entfernen aber Labels. Wenn die Panels eine gemeinsame y-Achse haben und sich nur durch die x-Variable unterscheiden, rendern Sie sie als angrenzende Subplots (wspace≤0,06) mit einem Zeilenkopf-Titel.

3.5 Füllen Sie die Box. Die Datenhülle eines Panels belegt ≥75 % seines zugewiesenen Rechtecks. Wenn das natürliche Seitenverhältnis eines Panels tote Bänder hinterlässt, formen Sie das Raster um (Zeilenüberspannung, gestapelte komplementäre Panels) – polstern Sie das Panel nicht auf.

3.6 Richtung der Güte. Wenn „höher ist besser" oder „niedriger ist besser" nicht offensichtlich aus der Achsenbeschriftung hervorgeht, platzieren Sie einen kleinen aufrechten Hinweis („höher = besser") am Rand – einmal pro Panel-Zeile, niemals pro Panel und niemals nur in der Bildunterschrift. Eine Richtungsglyphe, die in gedrehten Text eingebettet ist, dreht sich mit; setzen Sie den Hinweis aufrecht. goodness_arrow(ax, ...) platziert diesen Hinweis.

3.7 Physische Breite. Eine einzeilige Abbildung mit 300 dpi passt in die Doppelspaltenbreite des Veröffentlichungsortes. Das Hinzufügen eines Schemas oder von Beschriftungen darf die Daten-Panels nicht schmaler machen als zuvor.


§4 Farbe

4.1 Fädelung. Sobald eine Farbe an eine Entität gebunden ist (eine Methode, ein Merkmal, eine Bedingung), verwenden Sie genau diese Farbe für jede Markierung, die diese Entität in der gesamten Abbildung repräsentiert – Linie, Füllung, Marker, Text, Heatmap-Zeile. Farbe ist die Querverbindung; ein Leser sollte niemals zweimal eine Legende konsultieren müssen.

4.2 Farbtöne begrenzen. Verwenden Sie so wenige unterschiedliche Farbtöne, wie die Daten erfordern. Wenn die Abbildung eine fokale Serie mit anderen vergleicht, machen Sie die fokale Serie visuell dominant (gesättigt, schwereres Gewicht) und rendern Sie Vergleicher mit niedrigerem visuellen Gewicht (entsättigt, heller oder dünner). Der fokale Farbton darf nicht mit einem Farbton aus einer kategorialen Palette zusammenfallen, die in derselben Abbildung verwendet wird. Die fokale Serie muss identifizierbar bleiben, selbst wenn ihre Markierung nullbreit oder mit anderen zusammenfällt – durch Umriss, Marker oder ein leicht getöntes Band. Verwenden Sie focal_palette(...), um die fokalen und Vergleichsfarben an die geordneten Labels zu binden.

4.3 Hierarchische Kategorien. Wenn Kategorien verschachtelt sind (Gruppen innerhalb von Gruppen), wählt die äußere Ebene die Farbtonfamilie und die innere Ebene sammelt darin.

4.4 Kontinuierlich und divergierend. Verwenden Sie eine wahrnehmungsuniforme sequentielle Karte für generische kontinuierliche Werte; eine einfarbige Rampe für ordinalen Rang oder Größe; eine divergierende Karte für vorzeichenbehaftete Größen – immer zentriert auf der semantisch bedeutsamen Null (0, 1,0 oder Median), niemals auf dem Datenmittelpunkt.

4.5 CVD-Sicherheit. Verlassen Sie sich niemals auf einen Rot/Grün-Kontrast für eine binäre oder gegensätzliche Unterscheidung. Jedes binäre Paar sollte in einer Deuteranopie-Simulation unterscheidbar bleiben. Reservieren Sie einen Alarmfarbton für Fehler-/Anomalie-/Störungsmarkierungen und verwenden Sie ihn nicht als Datenreihenfarbe.

4.6 Zwei Paletten, zwei Legenden. Wenn eine Abbildung zwei kategoriale Farbsysteme verwendet, sitzt jede Legende neben dem ersten Panel, in dem ihre Palette angewendet wird.


§5 Typografie

5.1 Satztitel. Ein Panel-Titel formuliert den Vergleich in einfacher Sprache, normale Schriftstärke, linksbündig. Metriknamen gehören auf die Achse, nicht in den Titel.

5.2 Rollenbasierte Größenleiter. Eine Abbildung verwendet höchstens drei Schriftgrößen, zugeordnet zur Rolle, nicht zum Platz: Titel/Achsenbeschriftungen/Serienidentität in Basisgröße; Legenden-/Anmerkungstext eine Stufe kleiner; Tick-Labels eine weitere Stufe tiefer. Panel-Buchstaben sind die einzige Ausnahme (fett, größer). Wenn ein Label nicht in seiner Rollengröße passt, beheben Sie das Layout oder kürzen Sie den Text – greifen Sie nicht zu einer Zwischengröße. apply_figure_style(sizes=(8,7,6)) setzt die Leiter. Wenn eine sekundäre Metadatenzeile notwendig ist, erstellen Sie den zweizeiligen Text mit two_tier_label(name, meta).

5.3 Nomenklatur. Arten-, Gen- und Variablennamen, die nach wissenschaftlicher Konvention kursiv gesetzt werden, werden kursiv gesetzt. Abgekürzte Codes erben die Regel; einmal beim ersten Auftreten ausschreiben.

5.4 Größenordnungssuffixe. Große Anzahlen verwenden k / M / B (4,2B, 120 kb), nicht kommaseparierte vollständige Ziffern.

5.5 Numerische Anmerkungen. Zahlen auf Markierungen verwenden höchstens 2 signifikante Stellen – es sei denn, 2-stelliges Runden würde dazu führen, dass zwei unterschiedliche Zeilen denselben Wert anzeigen; in diesem Fall zeigen Sie die Ziffer, die sie unterscheidet. Text auf einer gefüllten Markierung erreicht ≥4,5:1 Kontrast; wenn nicht, platzieren Sie den Text außerhalb der Markierung.

5.6 Keine internen Codes. Achsenbeschriftungen verwenden Klarnamen; Codebasis-Abkürzungen erscheinen nur in Klammern nach dem lesbaren Namen oder in der Bildunterschrift. Vergleichsserien werden damit beschriftet, was sie sind, nicht mit einem Rollenwort.

5.7 Panel-Buchstaben. Fett, oben links, außerhalb des Achsenkastens. Groß-/Kleinschreibung folgt der Konvention des Zielortes; panel_letter(ax, 'a', case=...) handhabt beide.


§6 Diagrammtyp-Anleitung (nach Datenform)

6.1 Kategorial × numerisch. Zeigen Sie die Verteilung, nicht nur die Zusammenfassung. Die Diagrammwahl folgt n: Jitter-Strip mit Median-Tick für kleine n; Box- oder Violin-Plot für große n; Balken + überlagerte Rohdatenpunkte oder Balken + Intervall, wenn der Mittelwert die Botschaft ist. Verwenden Sie strip_with_median(...) für die Jitter-Strip-Form und bar_with_points(...) für Balken mit Rohpunkten oder einem Intervall. Das errorbar='ci95'-Intervall ist das t-Verteilungs-95%-KI des Mittelwerts (Halbbreite t_{0,975,n−1}·s/√n), daher ist es auch bei kleinem n gültig. Fehlerbalken und Rohpunktüberlagerungen sind Alternativen – beides zu zeigen ist meist redundant. Eine Kategorie, die in einer Gruppe fehlt, wird an ihrem Platz markiert (n. d., — oder ein gestreifter Geist); ein leerer Slot wird als Null gelesen. Ein Balken mit Nullwert erhält einen sichtbaren Stummel oder Punkt an der Basislinie.

6.2 Einzelbeobachtungskategorien. Ein gefüllter Punkt mit einem dünnen neutralen Stiel zur semantischen Null (Lollipop). Wertelabels sitzen neben dem Punkt.

Die gruppierten Plot-Helfer erfordern nicht leere, eindimensionale, endliche reelle Beobachtungen in jeder gelieferten Gruppe. Sie lehnen leere Gruppen und NaN/Inf ab, bevor sie zeichnen: Lösen Sie Ausschlüsse explizit auf, melden Sie das beibehaltene n und fügen Sie bei Bedarf separat einen Marker für fehlende Kategorien hinzu. Sie lassen fehlende Beobachtungen nicht stillschweigend weg. Maskierte Arrays mit ausgeschlossenen Beobachtungen werden vor der Konvertierung abgelehnt; Arrays ohne maskierte Einträge bleiben gültig. Angeforderte SD/KI-Intervalle erfordern mindestens zwei Beobachtungen pro Gruppe; bei einer einzelnen Beobachtung verwenden Sie Punkte ohne Intervall. Labels und Datengruppen müssen übereinstimmen. Bei strip_with_median zyklieren nicht leere Farbsequenzen; None oder eine leere Sequenz verwendet das Standardgrau. Eine leere Balkenfarbsequenz verwendet Matplotlibs Standard-Balkenfarbe; eine leere focal_palette-Basissequenz verwendet den Standardfarbzyklus.

6.3 Kontinuierliche Serien. Mittelwert-pro-x als Linie mit Markern; einzelne Durchläufe als dünne durchscheinende Linien oder Punkte dahinter. Beschriften Sie jede Serie mit direktem Text am rechten Ende ihrer Linie, bevorzugt gegenüber einem Legendenkasten; end_of_line_labels(...) platziert diese Labels. Zusammenfassungsglyphen (pro-Bin-Mittel/Median) verwenden eine Form, die nicht mit einer Rohbeobachtung verwechselt werden kann, identisch über alle Serien hinweg, unterhalb der Rohpunkte in der Z-Reihenfolge gezeichnet.

end_of_line_labels validiert Serien-/Label-Anzahlen und nicht leere passende x/y-Längen vor dem Hinzufügen von Labels. Endpunkte müssen endlich sein; innere Lücken können bleiben. Es greift auf das Ende jeder indizierten Sequenz zu, ohne die gesamte Serie zu kopieren. Nicht leere Farbsequenzen zyklieren; None oder eine leere Sequenz verwendet die aktuelle Standardtextfarbe. Panel-Buchstaben müssen für panel_crops eindeutig sein.

6.4 Verteilungen auf gemeinsamem Träger. Wenn sich zwei Verteilungen stark überlappen, stapeln Sie sie als kleine Panels mit einer gemeinsamen x-Achse oder verwenden Sie einen Rückenlinien-Plot. Überlagern Sie nur, wenn die Trennung visuell klar ist.

6.5 Matrizen. Wenn eine Heatmap klein genug zum Lesen ist (< ~200 Zellen), drucken Sie den Wert in jede Zelle. Geben Sie den Schwellenwert einmal im Farbbalken-Label an.

6.6 Einbettungen. Dimensionsreduktionsstreudiagramme (UMAP, t-SNE, PCA) entfernen Ticks und Tick-Labels; ein kleines Eckpfeilpaar benennt die Achsen. Cluster werden durch dünne Führungslinien zu Text in umgebendem Weißraum beschriftet.

6.7 Gepaarte Vorhersage vs. Beobachtung. Stapeln Sie die beiden als benachbarte Spuren mit identischem x und Farbe; lassen Sie die Ausrichtung den Vergleich tragen. Ziel...

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills