7
respostas

ColumnChart não aparece

<!DOCTYPE html>
<html lang="pt_br">
<head>
    <meta charset="utf-8">
    <script type="text/javascript" src="js/graficos.js"></script>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

    <script>
        google.charts.load('current', {'packages':['corechart'], 'language': 'pt'});       




        google.charts.setOnLoadCallback(desenharGraficos);     
    </script>
</head>
<body>
    <body>
        <div id="graficoPizza"></div>
        <div id="graficoLinha"></div>
        <div id="graficoColuna"></div>
    </body>

</body>
</html>

--------------------------------------------
JS


function desenharGraficos(){

    //Pizza
    var tabela = new google.visualization.DataTable();
    tabela.addColumn('string', 'categorias');
    tabela.addColumn('number', 'valores');
    tabela.addRows([
        ['Educação', 2000],
        ['Transporte', 500],
        ['Lazer', 230],
        ['Saúde', 50],
        ['Cartão de crédito', 900],
        ['Alimentação', 260],              
    ]); 

    var opcoes = {
        title: 'Tipos de Gastos',
        height: 400,
        width: 800,
        is3D: true,
        legend: 'labeled', //top, right, left, bottom
        pieSliceText: 'value', //value, label 
        slices:{
            0:{}, 
            1:{color: 'grey'}, 
            2:{color: '#a6a6a6'},
            3:{color: 'grey'},
            4:{offset: 0.2},
            5:{color: 'grey'},
        }
        //colors: ['grey', 'red']
        // 'pieHole': 0.8 Grafico DONUT | OBS: tem que tirar o 3D
    };

    var grafico = new google.visualization.PieChart(document.getElementById('graficoPizza'));
    grafico.draw(tabela, opcoes);

    //Linhas
    tabela = new google.visualization.DataTable();
    tabela.addColumn('string','mes');
    tabela.addColumn('number','gastos');
    tabela.addRows([
        ['jan',800],
        ['fev',400],
        ['mar',1100],
        ['abr',400],
        ['mai',500],
        ['jun',750],
        ['jul',1500],
        ['ago',650],
        ['set',850],
        ['out',400],
        ['nov',1000],
        ['dez',720]
    ]);

    var opcoes = {
        title: 'Gastos por mes',
        height: 400,
        width: 800,
        vAxis: {
            format: 'currency',
            gridlines: { //tirar as linhas
                count: 0,
                // color: 'transparent' não precisa, depois da att o count 0 remove só as linhas
            }
        },
        curveType: 'function', //tranformar em curvas
        legend: 'none'

    }

    var grafico = new google.visualization.LineChart(document.getElementById('graficoLinha'));
    grafico.draw(tabela, opcoes);



    //Colunas
    var tabela = google.visualization.arrayToDataTable([
    ['Mês','Entrada','Saída'],
    ['jan',2500,1000],
    ['fev',1000,500],
    ['mar',3000,1300],
    ['abr',1500,1700],
    ['mai',5000,2250],
    ['jun',3567,3000],
    ['jul',3452,1468],
    ['ago',1833,5250],
    ['set',1800,1000],
    ['out',1800,1000],
    ['nov',3569,1500],
    ['dez',3000,1740] 
]);


var grafico = new google.visualization.ColumnChart(document.getElementById("graficoColuna"));
    grafico.draw(tabela);
}


Quando eu coloco a minha function no html ele funciona normal, mas com os arquivos separados os dois primeiros gráficos aparecem e o columnChart não. Se alguem puder me ajudar agradeço haha.

7 respostas

Fala ai João, tudo bem? Acho que o problema está na ordem da declaração dos arquivos .js, ordem atual:

<script type="text/javascript" src="js/graficos.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

Repare que o seu arquivo grafico.js está vindo antes da Google, sendo assim, ele vai tentar usar recursos da Google que ainda não estão disponíveis e provavelmente deve estar dando erro no console.

Mude a ordem para:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript" src="js/graficos.js"></script>

Talvez resolva o seu problema os gráficos funcionem.

Espero ter ajudado.

Eu ja tinha tentado, não deu certo

Fala João, olha o console do navegador e verifica se está dando algum erro.

Se estiver, manda o erro aqui para a gente dar uma olhada.

Em todo caso, se quiser compartilhar o projeto, assim eu consigo simular o problema por aqui e analisá-lo com mais calma.

Pode compartilhar através do Github ou Google Drive (zipado).

Fico no aguardo.

Não está dando nenhum erro no console, segue o link no git https://github.com/ojoaovitoraraujo/charts . Eu criei alguns outros arquivos para teste.

Fala João, testei seu problema por aqui e ambos os gráficos funcionaram sem problemas, testei o arquivo coluna.html e charts.html.

coluna.html:

Gráficos de coluna

chart.html

Gráficos

Caso esteja faltando algum me avise que eu dou uma olhada novamente.

Espero ter ajudado.

Então, esse segundo arquivo html eu usei só para teste. No primeiro o graficos.html era pra estar aparecendo os 4 graficos

Fala João, dei uma olhada no projeto novamente, o problema está no arquivo .js que você está carregando para desenhar os gráficos, exemplo:

<script type="text/javascript" src="js/graficos.js"></script>

Repare que você está carregando o arquivo graficos.js que está dentro da pasta js, nele só existe a criação de dois gráficos.

O arquivo que cria quatro gráficos está na raiz do projeto, ou seja, fora da pasta js, sendo assim a importação deveria ser:

<script type="text/javascript" src="./graficos.js"></script>

Com essa alteração ele vai desenhar os quatro gráficos.

Espero ter ajudado.