Go to most recent revision | Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 281 | f9daq | 1 | #include <stdlib.h> |
| 2 | #include <stdio.h> |
||
| 3 | #include <TString.h> |
||
| 4 | #include <TGraph.h> |
||
| 5 | #include <TCanvas.h> |
||
| 6 | #include <TMultiGraph.h> |
||
| 7 | |||
| 8 | int IUdraw(const char *datoteka = "C:/home/data/meritev-iv.dat"){ |
||
| 9 | auto c1 = new TCanvas("c1","A Simple Graph Example",200,10,1400,1000); |
||
| 10 | c1->SetLogy(); |
||
| 11 | auto mg = new TMultiGraph(); |
||
| 12 | char setNames[40][20] = {"gr1", "gr2", "gr3", "gr4", "gr5", "gr6","gr7","gr8"}; |
||
| 13 | char barve[40][20] = {"kBlue", "kRed", "kGreen", "kOrange", "kYellow", "kPurple","kBlack","kMagenta"}; |
||
| 14 | char naslovi[40][35] = {"testna"}; |
||
| 15 | |||
| 16 | printf("#%s#\n", datoteka); |
||
| 17 | /* |
||
| 18 | string s = datoteka; |
||
| 19 | s.erase(s.find_last_of("."), string::npos); |
||
| 20 | fprintf(stderr,"%s\n", s.c_str()); |
||
| 21 | std::string key ("/"); |
||
| 22 | string ime; |
||
| 23 | std::size_t found = s.rfind(key); |
||
| 24 | if (found!=std::string::npos) { |
||
| 25 | ime = s.substr(found+1,s.length()); |
||
| 26 | } |
||
| 27 | */ |
||
| 28 | TString ime = gSystem->BaseName(datoteka); |
||
| 29 | TString path = gSystem->DirName(datoteka); |
||
| 30 | ime.Remove(ime.Index(".dat")); |
||
| 31 | fprintf(stderr,"Ime=%s\n", ime.Data()); |
||
| 32 | TString formatted = path + TString("/") + ime + TString(".png"); |
||
| 33 | //formatted.Form("%s.png", ); |
||
| 34 | fprintf(stderr,"png=%s\n", formatted.Data()); |
||
| 35 | TString formattedGraph; |
||
| 36 | formattedGraph.Form("I ( V ) -> %s ; Voltage [V]; Current [A]", ime.Data()); |
||
| 37 | |||
| 38 | for (Int_t d = 0; d<1; d++) { |
||
| 39 | FILE * fp=fopen(datoteka,"r"); |
||
| 40 | if (!fp) continue; |
||
| 41 | float f[4]; |
||
| 42 | Int_t j=0; |
||
| 43 | Int_t ndim=400; |
||
| 44 | char line[400]; |
||
| 45 | double fpXX[250]; |
||
| 46 | double fpYY[250]; |
||
| 47 | // Int_t k = 0; |
||
| 48 | while (fgets(line,ndim,fp)!=NULL) { |
||
| 49 | if (line[0] == '#') continue; |
||
| 50 | sscanf(line,"%f%f%f%f",&f[0],&f[1],&f[2],&f[3]); |
||
| 51 | printf("%f %f %f %f \n",f[0],f[1],f[2],f[3]); |
||
| 52 | fpXX[j]=f[2]; |
||
| 53 | fpYY[j]=f[3]; |
||
| 54 | j++; |
||
| 55 | } |
||
| 56 | // float *fpx = new float[j+1]; |
||
| 57 | // float *fpy = new float[j+1]; |
||
| 58 | // for (Int_t i=0; i<j-3; i++) { |
||
| 59 | // if (fpXX[i]!= 0) { |
||
| 60 | // k++; |
||
| 61 | // fpx[i]=fpXX[i+2]; |
||
| 62 | // fpy[i]=fpYY[i+2]; |
||
| 63 | // printf("%2.6f\t",fpx[i]); |
||
| 64 | // printf("\n"); |
||
| 65 | // printf("%2.6f\t",fpy[i]); |
||
| 66 | // printf("\n"); |
||
| 67 | // } |
||
| 68 | // } |
||
| 69 | fclose(fp); |
||
| 70 | |||
| 71 | auto graf = new TGraph(); |
||
| 72 | graf->SetMarkerStyle(20); |
||
| 73 | // graf->SetName(setNames[d]); |
||
| 74 | // graf->SetTitle(naslovi[d]); |
||
| 75 | graf->SetDrawOption("AP"); |
||
| 76 | // graf->SetLineColor(d+1); |
||
| 77 | graf->SetLineWidth(3); |
||
| 78 | graf->SetFillStyle(0); |
||
| 79 | |||
| 80 | for (int i=0; i<j; i++) { |
||
| 81 | if (fpYY[i]<=0) fpYY[i] = 1e-12; |
||
| 82 | graf->SetPoint(i,fpXX[i],fpYY[i]); |
||
| 83 | } |
||
| 84 | mg->Add(graf,"PL"); //graf->SetTitle(naslovi[d]); //graf->SetLineWidth(3); |
||
| 85 | //delete fpXX; |
||
| 86 | //delete fpYY; |
||
| 87 | } |
||
| 88 | mg->SetTitle(formattedGraph); |
||
| 89 | mg->Draw("A pmc plc"); |
||
| 90 | //c1->BuildLegend(); |
||
| 91 | c1->SaveAs(formatted); |
||
| 92 | return 0; |
||
| 93 | } |