Flotcharts con PHP (Gráfica de Barras)

Hola tyros!

Hoy les voy a mostrar como crear una gráfica de barras con PHP y Flotcharts.

Para comenzar, agregaremos una clase llamada "FlotCharts.php", con el siguiente código:

<?php
/**
 * Description of FlotCharts
 *
 * @author gabriel.castillo
 */
class PieChart {
    public $series;
}

class LineChart{
    public $series;
}

class BarChart{
    public $categories;
    public $series;
}

class Serie{
    public $label;
    public $color;
    public $data;
}
?>

Luego, agregamos una página PHP llamada "barras-simples.php", con el siguiente código:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>TyroDeveloper</title>
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js"></script>
        <script type="text/javascript" src="http://www.jqueryflottutorial.com/js/flot/jquery.flot.axislabels.js"></script>
        <style>
            body {
                font-family: Verdana;
            }
            #tooltip {
                position: absolute;
                display: none;
                border: 1px solid #fdd;
                padding: 2px;
                background-color: #fee;
                opacity: 0.80;
            }
        </style>
        <script type="text/javascript">
            $(document).ready(function () {
                $.ajax({
                    type: 'POST',
                    url: "flotcharts-barras-simples.php",
                    dataType: "json",
                    contentType: 'application/json',
                    async: false,
                    success: function (result) {
                        var options = {
                            series: {
                                bars: {show: true}
                            },
                            bars: {
                                align: "center",
                                barWidth: 0.5
                            },
                            xaxis: {
                                ticks: result.categories,
                                axisLabel: 'Productos'
                            },
                            yaxis: {
                                axisLabel: "Total"
                            },
                            legend: {
                                show: true
                            },
                            grid: {
                                hoverable: true,
                                clickable: true
                            }
                        };
                        var data = result.series;
                        $.plot($("#bar-chart"), data, options);
                        //Configurar tooltip
                        $("#bar-chart").bind("plothover", function (event, pos, item) {
                            if (item) {
                                var x = item.datapoint[0].toFixed(2),
                                        y = item.datapoint[1].toFixed(2);
                                //Obtener fecha
                                $("#tooltip").html("<b>" + item.series.label + "</b> = " + y)
                                        .css({top: item.pageY + 5, left: item.pageX + 5})
                                        .fadeIn(200);
                            } else {
                                $("#tooltip").hide();
                            }

                        });
                    }
                });
            });
        </script>
    </head>
    <body>
        <form id="frmFlotCharts" runat="server">
            <div id="bar-chart" style="width: 650px; height: 400px; margin: 0 auto"></div>
            <div id="tooltip"></div>
        </form>
    </body>
</html>

Para finalizar, agregamos un archivo PHP llamado "flotcharts-barras-simples.php", con el siguiente código:

<?php

include("FlotCharts.php");

$chart = new BarChart();

//Inicializar categorías
$chart->categories = array();
array_push($chart->categories, array(0, "Fresas"));
array_push($chart->categories, array(1, "Manzanas"));
array_push($chart->categories, array(2, "Uvas"));

//Inicializar Series
$chart->series = array();

//Agregar Serie
$serie = new Serie();
$serie->label = "Fresas";
$serie->color = "#FF0000";
$serie->data = array();
array_push($serie->data, array(0, 20));
array_push($chart->series, $serie);

//Agregar Serie
$serie = new Serie();
$serie->label = "Manzanas";
$serie->color = "#00CC00";
$serie->data = array();
array_push($serie->data, array(1, 5));
array_push($chart->series, $serie);

//Agregar Serie
$serie = new Serie();
$serie->label = "Uvas";
$serie->color = "#9900CC";
$serie->data = array();
array_push($serie->data, array(2, 13));
array_push($chart->series, $serie);


//Generar Json
echo json_encode($chart);
?>

Así queda nuestra gráfica:

No hay comentarios:

Publicar un comentario