Gráfico de Barras Pictórico: Formas Personalizadas e Barras Gráficas Vetoriais

Ao apresentar métricas categóricas que se beneficiam de associações visuais imediatas, o Gráfico de Barras Pictóricooferece uma alternativa criativa e envolvente em comparação com barras retangulares padrão. Ao substituir blocos de cor sólida por ícones vetoriais personalizados, caminhos SVG ou padrões de símbolos repetidos, os gráficos de barras pictóricos transformam resumos de dados rotineiros em infográficos visualmente descritivos—como ícones humanos para estatísticas populacionais, formas de veículos para métricas de tráfego ou símbolos de frutas para contagens de colheita.

Os Mecanismos dos Gráficos de Barras Pictóricos

No Apache ECharts, os gráficos de barras pictóricos usam type: 'pictorialBar'. Eles operam em eixos padrão de categoria e valor, assim como os gráficos de barras regulares, mas substituem barras retangulares por gráficos personalizáveis definidos pela propriedade symbol (como formas padrão, URLs de imagens ou strings de caminhos SVG).

1. Configuração Básica

Para construir um gráfico de barras pictórico multi-série, configure eixos categóricos e numéricos, defina type: 'pictorialBar'em todas as séries e personalize símbolos individuais diretamente na matriz data array:

option = {
  title: {
    text: "Colheita do Mercado de Agricultores",
    left: 'center'
  },
  legend: {
    data: ['Primavera', 'Verão'],
    top: '8%'
  },
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'shadow'
    }
  },
  grid: {
    containLabel: true,
    top: '18%',
    left: 20
  },
  yAxis: {
    data: ['Maçãs', 'Laranjas', 'Bananas', 'Uvas', 'Morangos'],
    inverse: true,
    axisLine: { show: false },
    axisTick: { show: false },
    axisLabel: {
      margin: 30,
      fontSize: 14
    }
  },
  xAxis: {
    splitLine: { show: false },
    axisLabel: { show: false },
    axisTick: { show: false },
    axisLine: { show: false }
  },
  series: [
    {
      name: 'Primavera',
      type: 'pictorialBar',
      symbolRepeat: true,
      symbolSize: ['80%', '60%'],
      barCategoryGap: '40%',
      data: [
        { value: 320, symbol: 'circle' },
        { value: 180, symbol: 'rect' },
        { value: 410, symbol: 'diamond' },
        { value: 95, symbol: 'triangle' },
        { value: 240, symbol: 'roundRect' }
      ]
    },
    {
      name: 'Verão',
      type: 'pictorialBar',
      barGap: '10%',
      symbolRepeat: true,
      symbolSize: ['80%', '60%'],
      data: [
        { value: 290, symbol: 'circle' },
        { value: 210, symbol: 'rect' },
        { value: 520, symbol: 'diamond' },
        { value: 130, symbol: 'triangle' },
        { value: 310, symbol: 'roundRect' }
      ]
    }
  ]
};

 

Técnicas Estruturais Avançadas

Os gráficos de barras pictóricos podem repetir ícones sequencialmente para criar contagens de infográficos baseadas em unidades ou usar caminhos de recorte para criar visualizações de nível de preenchimento.

1. Padrões de Contagem de Unidades em Série Única

Habilite symbolRepeat: trueem um único eixo de valor para renderizar pilhas horizontais de símbolos baseados em unidades:

option = {
    tooltip: {
        trigger: 'axis'
    },
    xAxis: {
        type: 'value',
        max: 10,
        splitLine: { show: false }
    },
    yAxis: {
        type: 'category',
        data: ['Equipe Alpha', 'Equipe Beta', 'Equipe Gama'],
        axisLine: { show: false },
        axisTick: { show: false }
    },
    series: [
        {
            type: 'pictorialBar',
            symbol: 'roundRect',
            symbolRepeat: true,
            symbolSize: [12, 30],
            symbolMargin: 4,
            data: [8, 5, 9],
            itemStyle: {
                color: '#91cc75'
            }
        }
    ]
};

 

Afinando Layout e Formas SVG Personalizadas

Usar strings personalizadas de caminho SVG vetorial permite que você renderize ícones personalizados diretamente dentro de suas séries de gráficos.

1. Caminho Vetorial Personalizado e Superposição de Fundo

Forneça uma string personalizada de caminho SVG para símbolo e sobreponha uma imagem de fundo em escala total abaixo para criar medidores do tipo progresso:

const pathBattery = 'path://M16 4h-2V2a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v2H8a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z';

option = {
    title: {
        text: 'Níveis de Bateria dos Dispositivos',
        left: 'center'
    },
    tooltip: {
        trigger: 'axis',
        axisPointer: { type: 'none' }
    },
    grid: {
        top: '20%',
        bottom: '15%',
        left: '10%',
        right: '10%'
    },
    xAxis: {
        type: 'category',
        data: ['Nó A', 'Nó B', 'Nó C', 'Nó D'],
        axisLine: { show: false },
        axisTick: { show: false }
    },
    yAxis: {
        type: 'value',
        max: 100,
        show: false
    },
    series: [
        {
            name: 'Invólucro da Bateria',
            type: 'pictorialBar',
            symbol: pathBattery,
            symbolSize: ['60%', '100%'],
            symbolPosition: 'start',
            symbolBoundingData: 100,
            symbolClip: false,
            itemStyle: {
                color: '#e2e8f0' // Invólucro de fundo vazio
            },
            data: [100, 100, 100, 100],
            z: 1
        },
        {
            name: 'Nível de Carga',
            type: 'pictorialBar',
            symbol: pathBattery,
            symbolSize: ['60%', '100%'],
            symbolPosition: 'start',
            symbolBoundingData: 100,
            symbolClip: true, // Preenche proporcionalmente em relação ao valor
            label: {
                show: true,
                position: 'top',
                formatter: '{c}%',
                fontSize: 14,
                fontWeight: 'bold',
                color: '#333'
            },
            itemStyle: {
                color: '#22c55e' // Preenchimento verde ativo de carga
            },
            data: [85, 45, 92, 20],
            z: 2
        }
    ]
};

 

Melhores Práticas Estratégicas

  • Atribua símbolos por item para categorias distintas: Passe definições individuais de símbolo dentro dos objetos de dados (por exemplo, { valor: 320, símbolo: 'círculo' }) para distinguir visualmente as linhas sem depender exclusivamente das cores.
  • Mantenha os metáforas de ícones intuitivas: Escolha símbolos que correspondam diretamente ao tópico dos dados (por exemplo, silhuetas de usuários para dados demográficos ou ícones de bateria para métricas de energia) para tornar a visualização imediatamente legível.
  • Use symbolClip: true para indicadores de preenchimento: Ao exibir métricas percentuais contra fundos completos, defina symbolClip: true na série ativa para que a forma vetorial personalizada preencha proporcionalmente.
Scroll to Top