Was macht Paper Figures (Diagramme für wissenschaftliche Arbeiten)?
Eine Abbildung ist ein sichtbar gemachtes Argument. Sie hat ihren Platz verdient, wenn ein Leser, der sie fünf Sekunden lang betrachtet, bevor er die Bildunterschrift liest, die von ihr aufgestellte Behauptung nennen kann. Alles in dieser Fähigkeit dient diesem Test.
Der von ihr kodierte Stil ist der, den starke Papiere auf der S&P, USENIX Security, CCS und NDSS gemeinsam haben: kleine, vektorbasierte, zweispaltige Abbildungen; wenige Darstellungselemente; direkte Beschriftungen; drucktaugliche Farben; Bildunterschriften, die die Kernaussage nennen, anstatt die Achsen zu beschreiben.
Kernprinzip
Eine Abbildung = eine Behauptung = eine Botschaft in der Bildunterschrift.
Wenn zwei Behauptungen gezeigt werden müssen, zeichnen Sie zwei Panels oder zwei Abbildungen. Eine Abbildung, die drei Dinge zeigt, wird als keine von ihnen gelesen.
Unverhandelbare Regeln
- Eine Botschaft pro Abbildung. Der erste Satz der Bildunterschrift nennt sie; die Grafik stützt sie.
- In Druckgröße zeichnen. Eine einspaltige Abbildung ist 3,5 Zoll breit (IEEE), 3,33 Zoll (ACM sigconf), 3,4 Zoll (USENIX). Niemals groß zeichnen und in LaTeX verkleinern: Die Schriften schrumpfen unter die 7-PT-Untergrenze.
- Vektorausgabe (
.pdfaus matplotlib) für alles mit Text oder Linien. 300 dpi Raster nur für Fotografien und Screenshots. - Schriften ≥ 7 PT in Druckgröße; Achsenbeschriftungen 8 PT, Tick-Beschriftungen 7 PT.
- Drucktaugliche Farbe: Okabe-Ito-Palette, nichts wird nur durch Farbe unterschieden, und die Abbildung muss in Graustufen überleben (
scripts/check_figure.py --preview). - Keine irreführenden Achsen: Balkendiagramme beginnen bei Null; logarithmische Skalen sind beschriftet; keine gestauchte y-Achse, um einen Unterschied zu dramatisieren; keine doppelten y-Achsen ohne expliziten, genannten Grund.
- Unsicherheit zeigen, wenn die Behauptung quantitativ ist: KI-Bänder, Fehlerbalken oder n in der Bildunterschrift. Eine Punktschätzung ohne Nenner ist kein Ergebnis.
- Die Bildunterschrift sagt, was zu beachten ist, dann die Einheiten, dann n. Sie ist keine Liste von Farben.
- Kein Chartjunk: kein 3-D, keine Schatten, keine Farbverläufe als Dekoration, keine Regenbogenkarten, keine Hintergrundfüllungen, keine Gitterlinien, die mit den Daten konkurrieren.
- Reproduzierbar: Das Skript, das die Abbildung generiert hat, befindet sich neben ihr im Repository, zusammen mit der Datendatei oder einem Seed. Eine Abbildung, die niemand neu generieren kann, ist eine Verbindlichkeit bei der druckreifen Version.
Schritt 0 – Entscheiden Sie zuerst die Behauptung
Schreiben Sie einen Satz, in Worten, den die Abbildung selbsterklärend machen muss:
"Öffentlicher Exploit-Code erscheint jetzt schneller als Advisories: Das 30-Tage-Artifact-to-Advisory-Verhältnis stieg von 0,63 auf 1,83 über vier Epochen hinweg."
Wenn Sie diesen Satz nicht ohne „und“ schreiben können, haben Sie zwei Abbildungen.
Füllen Sie templates/figure-brief.md aus, bevor Sie matplotlib berühren. Das dauert zwei Minuten und verhindert die häufigste Nacharbeit: eine schöne Abbildung, die die falsche Größe zeigt.
Schritt 1 – Wählen Sie die Kodierung aus der Behauptung
Lesen Sie references/encoding-guide.md. Die Kurzfassung:
| Behauptungstyp | Kodierung | Vermeiden |
|---|---|---|
| Verteilung / wie schnell | CDF (Stufen), Violine, Box, Strip | Balken der Mittelwerte ohne Streuung |
| Gepaarter Vergleich | Hantel, Steigung, gepaarte Punkte | zwei schwebende Balken |
| Zusammensetzung im Zeitverlauf | Gestapelte Fläche, kleine Multiples | Torte, 3-D-Torte |
| Rangfolge | Sortierte horizontale Balken, Punktdiagramm | unsortierte Balken, Regenbogen |
| Zwei-Variablen-Abwägung | Streuung + Pareto-Front | Blase mit unlesbaren Größen |
| Matrix / Abdeckung | Heatmap mit einer wahrnehmungsuniformen Karte, Werte in Zellen | Regenbogen-Heatmap ohne Werte |
| Prozess / Zeitleiste | Schwimmbahn, Zeitleiste, Sequenzdiagramm | eine Tabelle mit Daten in Prosa |
| Taxonomie / Entscheidung | Beschrifteter Baum, Matrix mit gefüllten Zellen | verschachtelter Aufzählungstext |
Schritt 2 – Zeichnen Sie mit dem gemeinsamen Stil
import sys; sys.path.insert(0, "scripts")
from figure_style import apply_style, new_fig, save, SERIES, panel_label
apply_style() # 8 PT Basis, Okabe-Ito, drucktaugliche rcParams
fig, ax = new_fig(3.5, 2.3) # Einzelspalte, korrektes Seitenverhältnis
ax.plot(x, y, color=SERIES[0], label="Pre-AI")
save(fig, "figs/fig1_cdf") # schreibt .pdf (für LaTeX) + .png (Vorschau)
Passen Sie den Stil global an, niemals pro Abbildung: Zwei Abbildungen in einem Papier mit unterschiedlichen Schriftarten oder Linienstärken lesen sich wie zwei verschiedene Papiere.
references/style-spec.md listet jede Einstellung auf und warum sie so gesetzt ist.
Schritt 3 – Beschriften Sie direkt, Bildunterschrift zuletzt
- Setzen Sie den Seriennamen am Ende ihrer Linie oder im Plot, anstatt in einer Legendenbox. Verwenden Sie eine Legende nur, wenn direkte Beschriftungen kollidieren würden (siehe
examples/fig01_cdf.png). - Panel-Beschriftungen A, B, C in Fettschrift oben links, auf die in der Bildunterschrift Bezug genommen wird.
- Achsenbeschriftungen: Menge + Einheit + Skala (
Tage seit Offenlegung (logarithmische Skala)). - Schreiben Sie dann die Bildunterschrift mit
references/captions.md: Kernaussage → was die Achsen zeigen → Einheiten/n/KI → der eine Vorbehalt, den ein Leser nicht übersehen darf.
Schritt 4 – Machen Sie es drucktauglich
- Palette:
SERIESinscripts/figure_style.py(Okabe-Ito). Sequenzielle Daten:cividis, niemalsjet. Divergierend:RdBu_r, nur um eine aussagekräftige Null herum. - Kodieren Sie auch durch Form: Marker und Linienstile variieren mit der Serie, sodass die Abbildung den Graustufendruck und farbenblinde Gutachter übersteht.
- Führen Sie den Prüfer aus:
python scripts/check_figure.py figs/fig1_cdf.png --preview
Er meldet Größe/dpi, die chromatische Palette, die Graustufen- und Deuteranopie-Trennung und schreibt fig1_cdf_gray.png / fig1_cdf_cvd.png. Sehen Sie sich beide an.
references/accessibility.md deckt die Details ab (Kontrast, CVD, Alternativtext).
Schritt 5 – Exportieren und einbinden
- Vektor-PDF mit eingebetteten TrueType-Schriften exportieren (
pdf.fonttype = 42, bereits gesetzt). - In der Druckbreite einbinden:
\includegraphics[width=\columnwidth]{figs/fig1_cdf.pdf}. - Überprüfen Sie das kompilierte PDF bei 100 %: kein Text unter 7 PT, keine abgeschnittenen Beschriftungen, keine Abbildung höher als eine halbe Spalte, es sei denn, es ist die konzeptionelle Hauptabbildung des Papiers.
references/production.mdbehandelt die LaTeX-Einbindung, Schrifteinbettung und Dateianordnung.
Schritt 6 – Überprüfen Sie wie ein Gutachter
- Fünf-Sekunden-Test: Zeigen Sie die Abbildung allein jemandem; kann er die Behauptung nennen?
- Bildunterschriften-Test: Der erste Satz sollte die Behauptung sein, nicht „Abbildung 3 zeigt…“.
- Graustufentest: Beide Vorschauen werden korrekt gelesen.
- Zoom-Test: Bei 100 % des kompilierten PDFs ist jedes Label lesbar.
- Integritätstest: Die Zahlen in der Abbildung stimmen mit der Tabelle und dem Text überein; die Achse ist nicht gestaucht; Fehlerbalken sind in der Bildunterschrift definiert.
- Wiederverwendungstest: Löschen Sie das PNG; generiert das Skript es bytegenau neu? Es sollte.
Budget für Darstellungselemente
| Veranstaltungsklasse | Darstellungselemente insgesamt | Hinweise |
|---|---|---|
| Top-4-Konferenz | 6–10 | Eine konzeptionelle Abbildung, eine Zeitleiste, Ergebnistabellen; auf jedes Element wird im Text Bezug genommen |
| Magazin | 4–6 | Eine Botschaft pro Element; Seitenleisten anstelle von Anhängen |
| Zeitschrift | 8–12 | Mehr Platz, gleiche Regeln |
Wenn auf eine Abbildung nicht mit einer Behauptung im Text Bezug genommen wird („Abbildung 5 zeigt, dass X“), entfernen Sie sie oder schreiben Sie den Satz neu.
Anti-Patterns
| Anti-Pattern | Warum es scheitert |
|---|---|
| Regenbogen/Jet-Farbkarte | Nicht wahrnehmungsgeordnet; irreführende Werte; in Graustufen unlesbar |
| 3-D- oder schattierte Balken/Torten | Dekoration, die den Vergleich verzerrt |
| Torte mit >3 Segmenten | Menschen vergleichen Winkel schlecht; verwenden Sie sortierte Balken |
| Doppelte y-Achse | Lädt zu einer Korrelationsbehauptung ein, die die Daten nicht stützen; verwenden Sie zwei Panels |
| Gestaudhte y-Achse bei Balken | Übertreibt Unterschiede; ein Gutachter wird es bemerken |
| Legendenbox mit 6 Einträgen | Erzwingt Farbzuordnung; verwenden Sie direkte Beschriftungen oder kleine Multiples |
| Winziger, in LaTeX skalierter Text | Schriften fallen unter 7 PT; die Abbildung wird zu grauem Rauschen |
| Bildunterschrift, die Farben auflistet | „Die blaue Linie zeigt…“ sagt dem Leser nichts, was er nicht sehen kann |
| Screenshot einer Tabelle | Nicht vektorbasiert, nicht bearbeitbar, nicht barrierefrei |
| Abbildung, die eine Tabelle wiederholt | Verschwendung eines Darstellungselements; behalten Sie das, das die Behauptung stützt |
| Unbeschriftete logarithmische Achse | Der Leser kann Steigungen nicht über Größenordnungen vergleichen |
| Fehlende n / Fehlerbalken | Eine Punktschätzung ohne Unsicherheit ist kein Beweis |
Ressourcenkarte
| Datei | Verwendung |
|---|---|
references/venue-figure-profiles.md | Was die Top-4-Veranstaltungen erwarten, Spaltenbreiten, Bildunterschriften-/Platzierungsregeln |
references/encoding-guide.md | Behauptung → Diagrammzuordnung, logarithmische Skalen, Unsicherheit, wann eine Tabelle gewinnt |
references/style-spec.md | Jede matplotlib-Einstellung mit ihrem Grund; Palette-Hex-Codes |
references/captions.md | Bildunterschriften-Formel und Vorher/Nachher-Beispiele |
references/accessibility.md | Farbenblind- und Graustufensicherheit, Kontrast, Alternativtext |
references/production.md | Export, LaTeX-Einbindung, Schriften, Dateianordnung, Reproduzierbarkeit |
references/anti-patterns.md | Was zu entfernen ist, mit dem Beispiel, das es zeigt |
scripts/figure_style.py | rcParams, Okabe-Ito-Palette, new_fig, save, panel_label |
scripts/check_figure.py | Größen-/dpi-Prüfung, Graustufen- und Deuteranopie-Vorschauen, Palettenbericht |
scripts/make_examples.py | Generiert jedes Beispielbild (synthetische Daten) |
examples/ | Referenzbilder: wie gute Beispiele aussehen, plus ein Schlecht-gegen-Gut-Paar |
templates/figure-brief.md | Einseitige Kurzbeschreibung vor dem Zeichnen |