CommunityImagemgithub.com

wxx827/figuras-cientificas

1219 geradores matplotlib prontos para uso, produzindo figuras científicas de qualidade de publicação, com sistema de design Times New Roman e lint tipográfico que lê as fontes incorporadas no PDF renderizado.

O que é figuras-cientificas?

Este skill fornece um catálogo massivo de 1219 scripts matplotlib auto-suficientes, numerados de 0 a 1218, que geram figuras científicas prontas para publicação com estética de periódicos de alto padrão. Cada script cria seus próprios dados sintéticos e exporta um PNG de 300 dpi para a pasta `output/`, garantindo que sejam executáveis sem nenhum argumento. O sistema de design é rigoroso: usa Times New Roman (ou Tinos como fallback com métricas idênticas), paletas de cores suaves e saturadas, spines finos e grades de múltiplos painéis. Inclui um linter tipográfico que renderiza para PDF e verifica as fontes realmente incorporadas, evitando que fontes incorretas passem despercebidas. O skill cobre uma ampla gama de domínios — estatística, mapeamento geoespacial, ML, bio-ômica, clima, física, economia, ensaios clínicos, química, neurociência, otimização, robótica, sensoriamento remoto, ecologia, astronomia, visão computacional, redes neurais, modelos generativos e muito mais — sendo útil para pesquisadores, engenheiros e analistas que precisam de figuras consistentes e de alto impacto sem reescrever estilos de plotagem do zero. Ele é compatível com plataformas como Claude Code, Cursor e Codex, e sua documentação inclui um índice detalhado com 135 grupos de figuras, guias de fluxo de trabalho e um sistema de design completo.

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

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Figuras Científicas (qualidade de publicação)

1219 geradores matplotlib prontos para execução, numerados 0-1218, que reproduzem a estética de figuras de periódicos de alto padrão: Times New Roman em toda a figura, espinhos finos e escuros, paletas suaves e saturadas, grades de múltiplos painéis justas, anotações de limiares e métricas, densidades marginais, exportação em 300 dpi.

Cada script é autocontido. É executado sem argumentos, cria seus próprios dados sintéticos e escreve um PNG em output/ nomeado conforme seu número.

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

Encontrando a figura certa

Não leia este arquivo procurando por um nome de gráfico; o catálogo é dividido para que você carregue apenas o que precisa.

  1. Leia catalog/INDEX.md — 135 grupos, cada um uma disciplina ou família de gráficos, com sua faixa numérica.
  2. Leia o arquivo do grupo que corresponde. Cada um lista todas as figuras em sua faixa com o que desenha e quando usá-lo.
  3. Leia o script antes de adaptá-lo.

Quando o nome do gráfico já é conhecido, pule o índice e pesquise em todos os grupos:

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

Para ver como uma figura se parece antes de executá-la, abra reference/thumbs/<número>_<nome>.jpg — todos os 1219 estão lá, reduzidos. reference/curated/ contém 33 deles em resolução total.

Se nada no catálogo se encaixar, comece pelo grupo de uso geral (0-54): distribuições, correlação, regressão, ranqueamento, composição e séries temporais, em uma forma que qualquer disciplina pode emprestar.

Fontes: leia isto antes da primeira execução

A fonte padrão é Times New Roman. Ela é proprietária e não está incluída; fonts/ contém Tinos (SIL OFL) como substituta, que tem larguras de avanço byte-idênticas, portanto uma figura se comporta da mesma forma independentemente de a máquina ter a fonte real. Confirme que a pilha resolve antes de confiar em qualquer saída:

cd scripts
python check_typography.py --metrics
#   vs Tinos              idêntico    (Tinos-Regular.ttf)

Se o matplotlib cair para DejaVu, set_pub_style() lança uma exceção em vez de degradar silenciosamente — uma fonte errada é invisível para qualquer verificação baseada em PNG. Detalhes em fonts/README.md.

Requisitos

matplotlib>=3.6 e numpy são necessários para todas as figuras; scipy, pandas, seaborn, scikit-learn, openpyxl e Pillow são necessários para subconjuntos da biblioteca e das ferramentas. O piso 3.6 é importante: o fallback de fonte glifo por glifo permite que uma legenda em chinês use uma fonte Song enquanto os numerais permanecem em Times.

pip install -r requirements.txt

O estilo compartilhado: scripts/pubstyle.py

Importe isto em qualquer nova figura para corresponder à estética:

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

set_pub_style()                       # aplica rcParams uma vez; nunca toque neles você mesmo
fig, axes = ...                       # construa sua figura
panel_title(axes[0], "Magnitude de deriva ao longo do tempo")

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,
                  "Fechamento de loop remove deriva ilimitada",   # a conclusão
                  subtitle="n = 240 trajetórias, 8 sequências")
panel_labels_inches(fig, axes)        # (a) (b) (c) em deslocamentos de polegadas iguais

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

Os tamanhos vêm de pubstyle.TYPE_SCALE, portanto não passe fontsize= quando um desses ajudantes fizer isso por você. Paletas principais em PALETTES: teal_rust, blue_red, greens, earth, div_rdbu, pastel4, zones, mais os gradientes cb_* seguros para daltonismo. Reutilize estas em vez dos padrões do matplotlib — são elas que fazem as figuras parecerem caras.

scripts/figkit.py é a camada de construção complementar: recortes de zoom, cartões de texto, eixos baseados em polegadas, posicionamento de rótulos sem sobreposição.

Adaptando para dados reais

Se os dados são uma tabela, não comece por estes scripts. Use a porta de entrada principal, que aplica todo o sistema de design a um arquivo:

cd scripts
python plot_data.py --data seus.csv --describe    # o que posso desenhar?
python plot_data.py --data seus.csv --kind scatter_fit --x a --y b --group g

Quatorze tipos de gráfico, detecção de codificação e delimitador, coerção de "1,234" e "12.5%" de volta para números, seleção automática de fonte CJK para nomes de colunas em chinês, e suporte a .xlsx além de .csv.

Para adaptar um dos 1219 geradores, primeiro descubra onde seus dados estão:

python plot_data.py --contract fig_threshold_regression.py

Os scripts não são uniformes quanto a isso. 19 dos 1219 isolam seus dados em uma função gen_data(), 299 os mantêm em outra função nomeada que precisa ser lida primeiro, 656 os constroem inline dentro de main(), e 245 não têm dados substituíveis porque a figura é um modelo — um espectro de Kaimal, um filtro de Kalman, uma cena de microscopia sintética. O relatório --contract diz qual caso se aplica e nomeia as constantes que valem a pena alterar.

Qualquer que seja editado, mantenha o código de plotagem e estilo. O estilo é a parte valiosa; não o reescreva com os padrões do matplotlib.

Regras estéticas (o que as faz parecer caras)

  1. Oculte os espinhos superior e direito; mantenha os espinhos finos (0.8) e cinza escuro (#333), não preto.
  2. Times New Roman em toda a figura, pequeno (7-9 pt corpo, mínimo absoluto 6.0 pt), negrito apenas para o título da figura, letras dos painéis e títulos dos painéis.
  3. Pares de paletas suaves e saturadas (teal/ferrugem, azul/vermelho) — nunca RGB primário.
  4. Adicione densidades marginais ou histogramas a gráficos de dispersão sempre que o espaço permitir.
  5. Anote estatísticas em uma caixa branca arredondada com borda fina; coloque o texto de limiar na cor de destaque.
  6. Grades densas de múltiplos painéis com tight_layout(h_pad, w_pad); compartilhe a legenda.
  7. Exporte em 300 dpi com bbox_inches="tight" (tratado por savefig).

DESIGN_SYSTEM.md tem os números aplicados por trás de cada regra.

Verificação

Abra o PNG em output/ e compare-o com a solicitação. Se um painel estiver apertado, aumente figsize ou h_pad/w_pad; se as cores conflitarem, mude para uma única entrada PALETTES.

Ler o PNG não pode dizer qual tipo de fonte foi usado, porque um PNG não armazena metadados de fonte. Execute também a auditoria tipográfica — ela renderiza para PDF e lê as fontes que o renderizador incorporou:

cd scripts
python check_typography.py              # erros devem ser zero
python check_figures.py --jobs 8        # execute tudo, audite cada PNG
python run_all.py --parallel 8          # reconstrua todos os 1219 (cerca de 15 minutos)
python run_all.py --range 173-192       # apenas o bloco de sensoriamento remoto
python run_all.py --parallel 8 --vector # PDF junto com cada PNG, para submissão

Documentos relacionados

  • catalog/INDEX.md — os 135 grupos e suas faixas numéricas.
  • DESIGN_SYSTEM.md — o padrão visual entre figuras (tamanhos de tela, paletas, escala tipográfica, espaçamento, mapas de cores proibidos). Leia antes de escrever uma nova figura ou editar uma existente.
  • WORKFLOW.md — o manual de operação: escolher um gerador, substituir dados reais, estruturar uma nova figura com new_figure.py, executar as verificações de qualidade. SKILL.md responde qual figura; WORKFLOW.md responde como usá-la.
  • scripts/reference.md — a API completa de pubstyle.
  • fonts/README.md — por que uma fonte está aqui, qual, e sob qual licença.
  • NUMBER_REGISTRY.md — quais faixas numéricas estão ocupadas. Novas figuras começam em 1219.

Habilidades Relacionadas