Skip to content

Chart

Renderiza gráficos a partir dos dados de um data source. No PDF usa o renderer nativo; no HTML injeta Chart.js automaticamente.

JSON

json
{
  "type": "chart",
  "id": "sales_chart",
  "x": 30,
  "y": 10,
  "width": 400,
  "height": 250,
  "chartType": "bar",
  "dataSourceId": "sales",
  "categoryField": "month",
  "series": [
    { "name": "Receita", "valueField": "revenue", "color": "1976d2" },
    { "name": "Custos", "valueField": "costs", "color": "d32f2f" }
  ],
  "options": {
    "showLegend": true,
    "legendPosition": "bottom",
    "showGridLines": true,
    "stacked": false,
    "hasBorder": true,
    "borderColor": "cccccc",
    "borderWidth": 1.0
  }
}

Propriedades

PropriedadeTipoPadrãoDescrição
widthdoubleLargura em pontos
heightdoubleAltura em pontos
chartTypestring"bar""bar", "line" ou "pie"
dataSourceIdstringnullData source dos dados
categoryFieldstringCampo usado como eixo X / categorias
seriesarray[]Séries de dados a plotar
optionsobjectnullOpções visuais

ChartSeries

PropriedadeTipoPadrãoDescrição
namestringNome exibido na legenda
valueFieldstringCampo numérico do registro
colorstring"000000"Cor da série (hex). Se não definida ou "000000", usa a paleta padrão automaticamente

Paleta automática

Quando a cor da série é omitida (ou "000000"), o Sulfite usa uma paleta de 10 cores consistente em todos os formatos (PDF, HTML e Studio): indigo, sky, emerald, amber, red, violet, pink, teal, orange, slate.

ChartOptions

PropriedadeTipoPadrãoDescrição
showLegendbooltrueExibir legenda
legendPositionstring"bottom""top", "bottom", "left", "right"
showGridLinesbooltrueExibir grade
labelColorstring"000000"Cor dos rótulos (hex)
labelFontSizedouble10.0Tamanho da fonte dos rótulos
animatebooltrueAnimação (só Studio/HTML)
stackedboolfalseBarras empilhadas (true) ou agrupadas lado a lado (false). Só para chartType: "bar"
hasBorderboolfalseExibir borda ao redor do gráfico
borderColorstring"000000"Cor da borda (hex)
borderWidthdouble1.0Espessura da borda em pontos
borderDashedboolfalseBorda tracejada
borderDashGapdouble4.0Espaço entre traços da borda

Tipos de gráfico

Bar

json
{ "chartType": "bar" }

Barras verticais. Cada série gera um grupo de barras por categoria.

Agrupado vs Empilhado

Por padrão, múltiplas séries são renderizadas lado a lado (agrupadas). Para empilhar as barras, defina stacked: true:

json
{
  "chartType": "bar",
  "options": { "stacked": true }
}
ModostackedComportamento
Agrupadofalse (padrão)Barras lado a lado para cada categoria
EmpilhadotrueBarras empilhadas verticalmente

Line

json
{ "chartType": "line" }

Linhas conectando pontos. Cada série é uma linha.

Pie

json
{ "chartType": "pie" }

Gráfico de pizza. Usa a primeira série. Cada categoria vira uma fatia. As cores das fatias seguem a paleta padrão automaticamente, ignorando a cor da série.

Fatias com valor zero

Fatias com valor zero ou negativo são omitidas automaticamente. Um log de diagnóstico é emitido para facilitar depuração.

Borda do gráfico

Qualquer tipo de gráfico pode ter uma borda decorativa:

json
{
  "options": {
    "hasBorder": true,
    "borderColor": "cccccc",
    "borderWidth": 1.5,
    "borderDashed": true,
    "borderDashGap": 4.0
  }
}

A borda é renderizada consistentemente em PDF (via pw.Container), HTML (CSS border) e Studio (via CustomPainter).

Renderização por formato

FormatoComo renderiza
PDFRenderizado nativamente com package:pdf. Barras agrupadas usam offset; empilhadas usam camadas cumulativas
HTMLInjetado como <canvas> com Chart.js 4 (CDN). Barras empilhadas via scales.stacked
StudioPreview em tempo real com package:graphic. Agrupado via DodgeModifier, empilhado via StackModifier
CSVDados tabulares (não renderiza o gráfico visual)
ExcelDados tabulares

Sulfite do 🇧🇷 para o mundo © 2026 Rafael S. Pinheiro