CommunityImagegithub.com

figures-scientifiques

1219 générateurs matplotlib prêts à l'emploi pour des figures scientifiques de qualité publication, basés sur un système de conception Times New Roman avec une police de secours compatible et un linter typographique. Couvre les graphiques statistiques, la cartographie, l'apprentissage automatique, et bien plus.

Qu'est-ce que figures-scientifiques ?

Cette compétence fournit une bibliothèque de 1219 scripts matplotlib autonomes, numérotés de 0 à 1218, chacun produisant une figure scientifique prête pour publication. Les scripts sont conçus pour être exécutés sans aucune intervention, générant leurs propres données synthétiques et exportant un PNG haute résolution (300 dpi) dans un dossier dédié. L'esthétique est strictement contrôlée : police Times New Roman (avec Tinos comme substitut métrique compatible et un audit typographique intégré), épines fines et sombres, palettes de couleurs sourdes-saturées, grilles multi-panneaux denses, et annotations statistiques. Le catalogue est organisé en 135 groupes disciplinaires, facilitant la recherche de la figure appropriée. Pour les utilisateurs ayant leurs propres données, un script `plot_data.py` permet d'appliquer le système de conception directement à des fichiers CSV ou XLSX. Les développeurs peuvent également adapter les 1219 générateurs : la commande `--contract` identifie où résident les données à remplacer, et la couche de style `pubstyle` garantit une cohérence visuelle. Des outils de vérification (typographie, qualité d'image) assurent la fiabilité des sorties et peuvent régénérer l'ensemble des figures en parallèle. Idéal pour les chercheurs, ingénieurs et data scientists qui veulent des figures esthétiques sans effort de configuration.

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

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Figures Scientifiques (qualité publication)

1219 générateurs matplotlib prêts à l'emploi, numérotés 0-1218, reproduisant l'esthétique des revues coûteuses : Times New Roman partout, épines fines et sombres, palettes sourdes-saturées, grilles multi-panneaux denses, annotations de seuil et métriques, densités marginales, export 300 dpi.

Chaque script est autonome. Il s'exécute sans arguments, génère ses propres données synthétiques et écrit un PNG dans output/ nommé d'après son numéro.

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

Trouver la bonne figure

Ne lisez pas ce fichier en cherchant un nom de graphique ; le catalogue est divisé pour ne charger que ce dont vous avez besoin.

  1. Lisez catalog/INDEX.md — 135 groupes, chacun étant une discipline ou une famille de graphiques, avec sa plage de numéros.
  2. Lisez le fichier du groupe correspondant. Chacun liste chaque figure de sa plage avec ce qu'elle dessine et quand l'utiliser.
  3. Lisez ce script avant de l'adapter.

Lorsque le nom du graphique est déjà connu, ignorez l'index et recherchez dans tous les groupes :

grep -ril "sankey" catalog/
grep -ril "survie\|kaplan" catalog/

Pour voir à quoi ressemble une figure avant de l'exécuter, ouvrez reference/thumbs/<numéro>_<nom>.jpg — les 1219 y sont, réduits. reference/curated/ en contient 33 en pleine résolution.

Si rien dans le catalogue ne correspond, commencez par le groupe à usage général (0-54) : distributions, corrélation, régression, classement, composition et séries temporelles, sous une forme que toute discipline peut emprunter.

Polices : lisez ceci avant votre première exécution

La police de la maison est Times New Roman. Elle est propriétaire et n'est pas fournie ; fonts/ contient Tinos (SIL OFL) à la place, qui a des largeurs d'avance octet-identiques, de sorte qu'une figure est mise en page de la même manière que la machine ait ou non la vraie police. Confirmez que la pile se résout avant de vous fier à une sortie :

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

Si matplotlib retombe jamais sur DejaVu, set_pub_style() lève une exception plutôt que de dégrader silencieusement — un mauvais type de police est invisible pour toute vérification basée sur PNG. Détails dans fonts/README.md.

Prérequis

matplotlib>=3.6 et numpy sont nécessaires pour chaque figure ; scipy, pandas, seaborn, scikit-learn, openpyxl et Pillow par des sous-ensembles de la bibliothèque et des outils. Le seuil de 3.6 est important : le repli de police glyphe par glyphe permet à une étiquette chinoise d'emprunter un visage Song tandis que les chiffres restent en Times.

pip install -r requirements.txt

Le style partagé : scripts/pubstyle.py

Importez ceci dans toute nouvelle figure pour correspondre à l'esthétique :

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

set_pub_style()                       # applique rcParams une fois ; ne les touchez jamais vous-même
fig, axes = ...                       # construisez votre figure
panel_title(axes[0], "Amplitude de la dérive au fil du temps")

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,
                  "La fermeture de boucle supprime la dérive non bornée",   # la conclusion
                  subtitle="n = 240 trajectoires, 8 séquences")
panel_labels_inches(fig, axes)        # (a) (b) (c) à des décalages en pouces égaux

savefig(fig, "ma_figure.png")            # 300 dpi dans output/

Les tailles proviennent de pubstyle.TYPE_SCALE, donc ne passez pas fontsize= lorsque l'un de ces assistants le fera pour vous. Palettes clés dans PALETTES : teal_rust, blue_red, greens, earth, div_rdbu, pastel4, zones, plus les rampes cb_* adaptées aux daltoniens. Réutilisez-les au lieu des valeurs par défaut de matplotlib — ce sont elles qui rendent les figures chères.

scripts/figkit.py est la couche de construction complémentaire : encarts zoom, cartes texte, axes basés sur les pouces, placement d'étiquettes anti- chevauchement.

Adaptation aux données réelles

Si les données sont un tableau, ne partez pas de ces scripts. Utilisez plutôt la porte d'entrée, qui applique tout le système de conception à un fichier :

cd scripts
python plot_data.py --data vos_donnees.csv --describe    # que puis-je dessiner ?
python plot_data.py --data vos_donnees.csv --kind scatter_fit --x a --y b --group g

Quatorze types de graphiques, détection d'encodage et de délimiteur, "1.234" et "12.5%" convertis en nombres, sélection automatique de police CJK pour les noms de colonnes chinois, et .xlsx aussi bien que .csv.

Pour adapter l'un des 1219 générateurs, trouvez d'abord où vivent ses données :

python plot_data.py --contract fig_threshold_regression.py

Les scripts ne sont pas uniformes à ce sujet. 19 des 1219 isolent leurs données dans une fonction gen_data(), 299 les gardent dans une autre fonction nommée qui doit être lue en premier, 656 les construisent en ligne dans main(), et 245 n'ont aucune données substituable car la figure est un modèle — un spectre de Kaimal, un filtre de Kalman, une scène de microscopie synthétique. Le rapport --contract indique quel cas s'applique et nomme les constantes à modifier.

Quoi que vous éditiez, conservez le code de traçage et de stylisation. Le stylisme est la partie précieuse ; ne le réécrivez pas avec les valeurs par défaut de matplotlib.

Règles esthétiques (ce qui rend ces figures chères)

  1. Cachez les épines supérieure et droite ; gardez les épines fines (0.8) et gris foncé (#333), pas noires.
  2. Times New Roman partout, petit (7-9 pt corps, 6.0 pt minimum), gras uniquement pour le titre de la figure, les lettres de panneau et les titres de panneau.
  3. Paires de palettes sourdes-saturées (sarcelle/rouille, bleu/rouge) — jamais de RVB primaire.
  4. Ajoutez des densités marginales ou des histogrammes aux nuages de points dès que l'espace le permet.
  5. Annotez les statistiques dans une boîte blanche arrondie avec une bordure fine ; mettez le texte de seuil dans la couleur d'accent.
  6. Grilles multi-panneaux denses avec tight_layout(h_pad, w_pad) ; partagez la légende.
  7. Exportez à 300 dpi avec bbox_inches="tight" (géré par savefig).

DESIGN_SYSTEM.md contient les nombres appliqués derrière chaque règle.

Vérification

Ouvrez le PNG dans output/ et comparez-le à la demande. Si un panneau est trop serré, augmentez figsize ou h_pad/w_pad ; si les couleurs jurent, passez à une seule entrée PALETTES.

La lecture du PNG ne peut pas vous dire quelle police a été utilisée, car un PNG ne stocke pas de métadonnées de police. Exécutez également l'audit typographique — il rend en PDF et lit les polices que le rendu a intégrées :

cd scripts
python check_typography.py              # les erreurs doivent être nulles
python check_figures.py --jobs 8        # exécute tout, audite chaque PNG
python run_all.py --parallel 8          # reconstruit tous les 1219 (environ 15 minutes)
python run_all.py --range 173-192       # juste le bloc de télédétection
python run_all.py --parallel 8 --vector # PDF à côté de chaque PNG, pour soumission

Documents connexes

  • catalog/INDEX.md — les 135 groupes et leurs plages de numéros.
  • DESIGN_SYSTEM.md — la norme visuelle inter-figures (tailles de toile, palettes, échelle typographique, espacement, cartes de couleurs interdites). À lire avant d'écrire une nouvelle figure ou d'en modifier une existante.
  • WORKFLOW.md — le manuel d'utilisation : choisir un générateur, remplacer par des données réelles, structurer une nouvelle figure avec new_figure.py, exécuter les contrôles de qualité. SKILL.md répond quelle figure ; WORKFLOW.md répond comment l'utiliser.
  • scripts/reference.md — l'API complète de pubstyle.
  • fonts/README.md — pourquoi une police est fournie ici, laquelle, et sous quelle licence.
  • NUMBER_REGISTRY.md — quelles plages de numéros sont prises. Les nouvelles figures commencent à 1219.

Skills associés