Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Gestione multi-array con JpGraph

    Ciao a tutti,
    ho scaricato la libreria JpGraph per visualizzare dei grafici con l'utilizzo di php e mysql. Non ho trovato soluzione al mio problema negli altri post aperti e sono costretto ad aprirne uno nuovo. La questione è la seguente, prendo come esempio uno script che si trova sul sito JpGraph. Voglio creare una grafico a barre verticali che abbia sull'asse x i giorni del mese e sull'asse y le ore impiegate nei lavori e suddivise per cliente.

    codice:
    require_once ('jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph_bar.php');
    
    $cliente1y=array(47,80,40,116);
    $cliente2y=array(61,30,82,105);
    $cliente3y=array(115,50,70,93);
    
    
    // Create the graph. These two calls are always required
    $graph = new Graph(350,200,'auto');
    $graph->SetScale("textlin");
    
    $theme_class=new UniversalTheme;
    $graph->SetTheme($theme_class);
    
    $graph->ygrid->SetFill(false);
    $graph->xaxis->SetTickLabels(array('1','2','3','4'......'31'));
    $graph->yaxis->HideLine(false);
    $graph->yaxis->HideTicks(false,false);
    
    // Create the bar plots
    $b1plot = new BarPlot($cliente1y);
    $b2plot = new BarPlot($cliente2y);
    $b3plot = new BarPlot($cliente3y);
    
    // Create the grouped bar plot
    $gbplot = new GroupBarPlot(array($b1plot,$b2plot,$b3plot));
    // ...and add it to the graPH
    $graph->Add($gbplot);
    
    
    $graph->title->Set("Bar Plots");
    
    // Display the graph
    $graph->Stroke();
    il codice è relativamente semplice. Quello che non riesco a fare io e gestire un solo array che mi contenga le informazioni di tutti i clienti. Nell'esempio qui sopra riportato il grafico genera tante barre verticali quanti sono gli array definiti $cliente1y,$cliente2y ect. Ok, ma i dati che devo gestire io sono flessibili e quindi non posso sapere quanti array ci sono da creare. Immagino che debba utilizzare i multi-array ma ho provato e non ho ottenuto alcun risultato.
    C'è qualcuno che ha lo stesso problema ed è riuscito a risolverlo? spero di essere stato chiaro
    Grazie in anticipo

  2. #2
    Ti basta creare dinamicamente l'array da passare alla classe GroupBarPlot.
    In pseudocodice:

    Codice PHP:
    ...
    $arr = new array();
    foreach (array 
    clienti as $cli) {
        
    $arr[] = new BarPlot($cli);
    }

    $gbplot = new GroupBarPlot($arr);
    ... 
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Ciao,
    ti ringrazio per il tuo suggerimento, funziona perfettamente!
    Per quanto riguarda il colore delle barre, avendo inserito tutti i dati di queste in un unico array bisogna settare il valore facendo scorrere nuovamente l'array:

    Codice PHP:
    foreach ($clienti as $key => $pippo) {
        
    $b1plot[$key]->SetColor("white");
        
    $b1plot[$key]->SetFillColor($array_colori[$key]);

    lo dico solo perché la funzione $b1plot->SetColor("white") come era in origine negli esempi di jpGraph a questo punto non funziona più, ma per gli esperti (io non lo sono) è scontato!

    Grazie ancora, buone ferie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.