Aproveitando uma dúvida que me enviaram estou escrevendo esta pequena dica. Conhecemos bem algumas interatividades dos gráficos, como por exemplo mostrar uma caixa do tipo ToolTip ao posicionar o mouse sobre as séries. Porém as vezes necessitamos que os valores dos dados estejam sempre em exibição junto com as linhas ou colunas, para que o usuário tenha uma rápida interpretação dos dados.

Em outras linguagens isso é uma tarefa muito simples (como o showDataTips do Adobe Flex), mas com o Goole Charts precisamos de um pouco mais de linhas de código, embora não seja impossível.

Image Chart with Value Marker

O que vamos aprender aqui é como usar um Data Value Marker. Esta funcionalidade permite inserir diversos tipos de marcadores sobre os gráficos. Alguns exemplos e todas as opções de configurações podem ser vistos com mais detalhes aqui.

Para inserir marcadores em nosso gráfico ao invés de usar a classe específica do gráfico desejado, utilizaremos a classe ImageChart.

O primeiro passo é criar nosso conjunto de dados, da mesma forma que já havíamos visto, através do DataTable.

Em seguida vamos fazer a configuração do nosso gráfico através do parâmetro “options“.

Para definir o tipo de gráfico que queremos, neste caso vamos usar um gráfico de barras, devemos utilizar o parâmetro “cht” e definir seu valor como “bhg“, da seguinte forma:

var options = {};

// 'bhg' parâmetro para um gráfico horizontal agrupado de barras.
// 'bvg' parâmetro para um gráfico vertical agrupado de barras.
// Para este exemplo é irrelevante que seja um gráfico agrupado,
// pois temos apenas uma série.
options.cht = 'bhg';

Uma vez definido o tipo de gráfico, agora iremos configurar como desejamos que o label com o valor da barra seja exibido através do marcador. Para isso utilizamos o parâmetro “chm”.

options.chm = 'N,2c689f,0,-1,10,0';

Cada valor entre “,” indica uma configuração, como cor do label, sobre qual série será exibido, etc. Apesar de ser mais “simples” configurar o parâmetro desta forma, pode parecer um pouco confuso a princípio. Portanto vamos configurá-lo da seguinte forma para ficar mais “clean”:

//Define os valores como do tipo Numérico
var tipoValor = 'N';

// Definindo as cores dos Labels.
var cor = '2c689f';

// Precisamos indicar sobre qual coluna queremos o label.
// Como neste exemplo só temos uma série,
// a coluna de dados é a coluna 0.
var indice = 0;

// -1 indica que os labels serão apresentados sobre todas as colunas
var mostrarBarras = -1;

// 10 pixels tamanho da fonte dos Labels.
var tamanhoFonte = 10;

// Para este exemplo a prioridade não é importante, mas é um parâmetro obrigatório
var prioridade = 0;

options.chm = [tipoValor, cor, indice, mostrarBarras, tamanhoFonte, prioridade].join(',');

Agora ficou bem mais claro, não é?
Pronto. Com isso já temos nosso gráfico configurado. Em seguida seria apenas instanciar a classe ImageChart para a criação do nosso gráfico:

new google.visualization.ImageChart(document.getElementById('visualization')).draw(data, options);

O Google Charts não faz o ajuste automático do eixo de valores para números maiores que 100. Pontanto como no meu exemplo estou usando números muito grandes, necessitamos ajustar o range do gráfico, através dos seguintes parâmetros:

//Alterando o range dos dados
 var min = 0;
 var max = 35000000;
 options.chds = min + ',' + max;

 //Ajustando os valores dos rótulos das colunas de acordo com o Range dos eixos
 options.chxr='1,0,35000000';

Simples assim.

O uso de parâmetros para realizar as diversas configurações necessárias parece confuso no início, mas com um pouco de insistência pode se tornar relativamente simples. Não deixem de usar a documentação do Google e os Wizards para testar todo tipo de alteração até obter o que desejam.

Abaixo deixo o código completo do meu exemplo:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>
      API Google Charts - Volume de Passageiros nos Aeroportos Brasileiros
    </title>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('visualization', '1', {packages: ['imagechart']});
    </script>
    <script type="text/javascript">

      function drawVisualization() {

    	// Criando o Data Table
        var data = google.visualization.arrayToDataTable([
          ['Aeroporto', 'Passageiros'],
          ['São Paulo (Guarulhos)', 32177594],
          ['Rio de Janeiro (Galeão)', 17491744],
          ['São Paulo (Congonhas)', 16775785],
          ['Brasília', 15665045],
          ['Belo Horizonte (Confins)', 10200348],
          ['Rio de Janeiro (Santos Dummont)', 8960345],
          ['Campinas', 8824074],
          ['Salvador', 8528837],
          ['Porto Alegre', 8261355],
          ['Curitiba (Afonso Pena)', 6825666]
        ]);

        var options = {};

        // 'bhg' parâmetro para um gráfico horizontal agrupado de barras.
        // 'bvg' parâmetro para um gráfico vertical agrupado de barras.
        // Para este exemplo é irrelevante que seja um gráfico agrupado, pois temos apenas uma série.
        options.cht = 'bhg';

        //Alterando o range dos dados
        var min = 0;
        var max = 35000000;
        options.chds = min + ',' + max;

        //Ajustando os valores dos rótulos das colunas de acordo com o Range dos eixos
        options.chxr='1,0,35000000';

        // Agora as definições de configurações para exibir os rótulos das barras.

        //Define os valores como do tipo Numérico
        var tipoValor = 'N';

        // Definindo as cores dos Labels.
        var cor = '2c689f';

		// Precisamos indicar sobre qual coluna queremos o label.
		// Como neste exemplo só temos uma série,
		// a coluna de dados é a coluna 0.
        var indice = 0;

        // -1 indica que os labels serão apresentados sobre todas as colunas
        var mostrarBarras = -1;

        // 10 pixels tamanho da fonte dos Labels.
        var tamanhoFonte = 10;

        // Para este exemplo a prioridade não é importante, mas é um aprâmetro obrigatório
        var prioridade = 0;

        options.chm = [tipoValor, cor, indice, mostrarBarras, tamanhoFonte, prioridade].join(',');

        //Criar o objeto visualization.
        new google.visualization.ImageChart(document.getElementById('visualization')).draw(data, options);

      }

      google.setOnLoadCallback(drawVisualization);

    </script>
  </head>
  <body style="font-family: Arial;border: 0 none;">
    <div id="visualization" style="width: 800px; height: 300px;"></div>
  </body>
</html>

Um abraço a todos!

Publicidade

Um comentário em “Utilizando o Google Charts – Parte 4: Exibindo os Valores dos Dados

  1. Boa Tarde.
    Estou com mais um probleminha meu amigo.
    Eu quero fazer um ComboChart com os valores deles aparecendo, porem nao estou conseguindo.
    Gostaria que todos os valores de cada coluna aparecesse no chart…Voce poderia me ajudar?

    obs:Mas diferente do seu exemplo de combo,eu fiz empilhado ( isStacked: true).

    Agradeço desde já…E mais uma vez,parabens pelo trabalho…Abç

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s