Altair
Altair expõe uma API declarativa de gramática de gráficos que compila para Vega-Lite - gráficos se tornam especificações JSON que você pode versionar, comparar e incorporar na web.
Busque em todas as páginas da documentação
Altair expõe uma API declarativa de gramática de gráficos que compila para Vega-Lite - gráficos se tornam especificações JSON que você pode versionar, comparar e incorporar na web.
Cartão de receita de referência rápida - pronto para copiar e colar.
import altair as alt
import pandas as pd
df = pd.read_csv("sales.csv", parse_dates=["ordered_at"])
chart = (
alt.Chart(df)
.mark_line(point=True)
.encode(x="ordered_at:T", y="sum(revenue):Q", color="region:N")
.properties(width=600, height=300, title="Receita por região")
)
chart.save("revenue.json")Quando usar isso:
+, |) com composição legívelimport altair as alt
import pandas as pd
import numpy as np
rng = np.random.default_rng(42)
df = pd.DataFrame(
{
"region": np.repeat(["East", "West"], 150),
"revenue": rng.normal(150, 35, 300).clip(20),
"units": rng.integers(1, 60, 300),
}
)
base = alt.Chart(df).encode(
x=alt.X("revenue:Q", bin=alt.Bin(maxbins=20), title="Receita"),
color="region:N",
)
hist = base.mark_bar(opacity=0.7).properties(width=400, height=250, title="Distribuição")
scatter = (
alt.Chart(df)
.mark_circle(size=60, opacity=0.5)
.encode(
x="units:Q",
y="revenue:Q",
color="region:N",
tooltip=["region", "units", "revenue"],
)
.properties(width=400, height=250, title="Unidades vs receita")
)
dashboard = alt.hconcat(hist, scatter).resolve_scale(color="shared")
rule = (
alt.Chart(pd.DataFrame({"y": [150]}))
.mark_rule(color="firebrick", strokeDash=[4, 4])
.encode(y="y:Q")
)
layered = scatter + rule
dashboard.save("dashboard.json")
layered.save("scatter_target.json")O que isso demonstra:
+Chart(data) + mark_* + canais encode (x, y, color, tooltip).transform_filter, transform_aggregate) permanecem na especificação.| Atalho | Tipo |
|---|---|
:Q | Quantitativo |
:N | Nominal (categorias) |
:O | Categorias ordenadas |
:T | Temporal |
import altair as alt
alt.data_transformers.disable_max_rows() # apenas quando você aceita embeds grandes
alt.renderers.enable("json") # o padrão do notebook varia por versãotransform_fold ou melt. Correção: organize em formato longo upstream.sort=["Jan", "Fev", ...] ou :O com ordem.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Plotly | Interatividade integrada rica | Você quer portabilidade da especificação Vega-Lite |
| matplotlib | Fluxos de trabalho de impressão maduros | JSON declarativo é o entregável |
| ggplot (plotnine) | Migração do ggplot do R | O embed Vega é o alvo |
| seaborn | EDA rápida com pandas | A serialização da especificação importa |
alt.Chart(df).mark_point().encode(x="x", y="y").facet("region:N")alt.Chart(df).transform_filter(alt.datum.revenue > 100).mark_bar().encode(...)hconcat, vconcat, operadores | e & empilham ou concatenam.resolve_scale alinha eixos e legendas.pl.DataFrame quando suportado ou .to_pandas().rule = alt.Chart(df).mark_rule(strokeDash=[4,4]).encode(y="mean(revenue):Q")
chart + rulechart.save("out.html") quando o renderizador HTML estiver configurado..encode(color=alt.Color("region:N", scale=alt.Scale(scheme="set2")))Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026