#ifndef _funzioni_h_ #define _funzioni_h_ #include #include #include #include #include "comune.h" #include #include "TGraph.h" #include "TAxis.h" #include "TH1F.h" using namespace std; vector mesi { "Gennaio", "Febbraio","Marzo","Aprile","Maggio"} ; int c1 = 6; int c2 = 11; vector ReadFromFile ( string filename ) { cout << "===>>> Inizio lettura da file " << filename << endl; vector vett ; ifstream f ( filename ) ; string line; vector tutti; if ( !f ) { cout << "Can't open file ! " << endl; exit(-11); } while ( getline (f,line) ) { istringstream ss( line ); vector record; while (ss) { string s; if (!getline( ss, s, ',' )) break; record.push_back( s ); } vector ave; vector act; for ( int k = 0; k < mesi.size() ; k++ ) { ave.push_back( atof(record[c1+k].c_str()) ) ; act.push_back( atof(record[c2+k].c_str()) ) ; } comune newcomune ( record[2], record[3] , record[4] , ave, act ) ; vett.push_back(newcomune) ; if ( vett.size() % 1000 == 0 ) cout << "Finora caricati " << vett.size() << " comuni, procedo." << endl; } cout << "===>>> Lettura terminata : caricati " << vett.size() << " comuni." << endl; return vett ; } ; TH1F GroupByProvincia( const vector & v , string provincia ) { int datasize = ( v[0].GetAveVector() ).size(); vector ave(datasize, 0.) ; vector act(datasize, 0 ) ; for ( auto iter = v.begin() ; iter!=v.end() ; iter++) { if ( iter->getProvincia() == provincia ) { for ( auto i = 0 ; i< datasize ; i++ ) { ave[i] += (iter->GetAveVector())[i]; act[i] += (iter->GetActVector())[i] ; } } } TH1F myhisto("myhisto","Andamento decessi (2020)", datasize, 0, datasize+1 ); for ( auto i = 0 ; i< datasize ; i++ ) { myhisto.SetBinContent(i+1,act[i]/ave[i] * 100); myhisto.GetXaxis()->SetBinLabel(i+1,mesi[i].c_str()); } myhisto.GetYaxis()->SetTitle("Incremento (%)"); myhisto.GetXaxis()->SetLabelSize(0.06); myhisto.GetXaxis()->SetTimeDisplay(1); myhisto.SetFillColor(kRed); myhisto.SetFillStyle(3003); return myhisto; }; void Print( const vector & v , int nmax ) { int iter = 0; for ( auto it = v.begin() ; it!=v.end() ; it++ ) { if ( iter > nmax ) break; cout << setw(20) << left<< it->getNome() << setw(35) << it->getProvincia() << " " << setw(5) << it->GetAve() << " " << it->GetAct() << endl; iter++; } } #endif