33     TGpSeries() : SeriesTy(
gpwLines), XYValV(), ZValV(), Label(), WithStyle(), DataFNm(), XCol(0), YCol(0), ZCol(0) { }
 
   45       return SeriesV[Left] > SeriesV[Right]; }
 
   61   int IsSameXCol(
const int& CurId, 
const int& PrevId) 
const;
 
   66   TGnuPlot(
const TStr& DataFileNm, 
const TStr& PlotFileNm, 
const TStr& PlotTitle, 
const bool& Grid);
 
   76   void ShowGrid(
const bool& Show) { SetGrid = Show; }
 
   77   void Pause(
const bool& DoPause) { SetPause = DoPause; }
 
   79   void SetXRange(
const double& Min, 
const double& Max) { XRange = 
TFltPr(Min, Max); }
 
   80   void SetYRange(
const double& Min, 
const double& Max) { YRange = 
TFltPr(Min, Max); }
 
   83   void SetLineStyle(
const int& PlotId, 
const TStr& StyleStr) { SeriesV[PlotId].WithStyle = StyleStr; }
 
   97   template<
class TKey, 
class TDat, 
class THashFunc>
 
   99   template<
class TKey, 
class THashFunc>
 
  101     bool PlotAvg=
true, 
bool PlotMed=
true, 
bool PlotMin=
false, 
bool PlotMax=
false, 
bool PlotSDev=
false, 
bool PlotStdErr=
false, 
const bool& ExpBucket=
false);
 
  116   int AddPwrFit3(
const int& PlotId, 
const TGpSeriesTy& SeriesTy, 
const double& MinX, 
const TStr& Style, 
double& Intercept, 
double& Slope, 
double& R2);
 
  120   void SavePng(
const int& SizeX=1000, 
const int& SizeY=800, 
const TStr& Comment=
TStr()) {
 
  122   void SavePng(
const TStr& FNm, 
const int& SizeX=1000, 
const int& SizeY=800, 
const TStr& Comment=
TStr(), 
const TStr& Terminal=
TStr());
 
  129     const double& BinFactor = 2, 
const double& MinYVal = 1);
 
  131     const double& BinFactor = 2, 
const double& MinYVal = 1);
 
  140   template <
class TVal1, 
class TVal2>
 
  142   template <
class TVal1, 
class TVal2, 
class TVal3>
 
  144   template <
class TVal, 
int Vals>
 
  149   template <
class TVal1>
 
  153   template <
class TVal1, 
class TVal2>
 
  157   template <
class TVal1, 
class TVal2, 
class TVal3>
 
  161   template <
class TVal1, 
class TVal2>
 
  166   template <
class TKey, 
class TVal, 
class THashFunc>
 
  170   template <
class TKey, 
class TVal, 
class THashFunc>
 
  174   template <
class TKey, 
class TVal, 
class THashFunc>
 
  177     const TStr& OutFNmPref, 
const TStr& Desc, 
const TStr& XLabel, 
const TStr& YLabel, 
 
  179   template <
class TKey, 
class TVal, 
class THashFunc>
 
  183     const TStr& OutFNmPref, 
const TStr& Desc, 
const TStr& XLabel, 
const TStr& YLabel, 
 
  185   template <
class TVal1>
 
  188    bool PlotAvg=
true, 
bool PlotMed=
true, 
bool PlotMin=
false, 
bool PlotMax=
false, 
bool PlotSDev=
false, 
bool PlotStdErr=
true, 
bool PlotScatter=
false);
 
  189   template <
class TVal1>
 
  191    const TStr& OutFNmPref, 
const TStr& Desc=
"",
 
  193    bool PlotAvg=
true, 
bool PlotMed=
true, 
bool PlotMin=
false, 
bool PlotMax=
false, 
bool PlotSDev=
false, 
bool PlotStdErr=
true, 
bool PlotScatter=
false);
 
  194   template <
class TVal2>
 
  197   template <
class TVal2>
 
  225 template <
class TVal1, 
class TVal2>
 
  227   FILE *F = fopen(FNm.
CStr(), 
"wt");
 
  229   if (! HeadLn.
Empty()) { fprintf(F, 
"# %s\n", HeadLn.
CStr()); }
 
  230   for (
int i = 0; i < ValV.Len(); i++) {
 
  231     fprintf(F, 
"%g\t%g\n", 
double(ValV[i].Val1), 
double(ValV[i].Val2)); }
 
  235 template <
class TVal1, 
class TVal2, 
class TVal3>
 
  237   FILE *F = fopen(FNm.
CStr(), 
"wt");
 
  239   if (! HeadLn.
Empty()) { fprintf(F, 
"# %s\n", HeadLn.
CStr()); }
 
  240   for (
int i = 0; i < ValV.Len(); i++) {
 
  241     fprintf(F, 
"%g\t%g\t%g\n", 
double(ValV[i].Val1), 
double(ValV[i].Val2), 
double(ValV[i].Val3)); }
 
  245 template <
class TVal, 
int Vals>
 
  247   FILE *F = fopen(FNm.
CStr(), 
"wt");
 
  249   if (! HeadLn.
Empty()) { fprintf(F, 
"# %s\n", HeadLn.
CStr()); }
 
  250   for (
int i = 0; i < ValV.Len(); i++) {
 
  251     fprintf(F, 
"%g", 
double(ValV[i][0]));
 
  252     for (
int v = 1; v < Vals; v++) {
 
  253       fprintf(F, 
"\t%g", 
double(ValV[i][v])); }
 
  259 template<
class TKey, 
class TDat, 
class THashFunc>
 
  269     BucketV.
Swap(XYFltValV);
 
  271   return AddPlot(XYFltValV, SeriesTy, Label, Style); 
 
  274 template<
class TKey, 
class THashFunc>
 
  275 int TGnuPlot::AddPlot(
const THash<TKey, TMom, THashFunc>& ValMomH, 
const TGpSeriesTy& SeriesTy, 
const TStr& Label, 
const TStr& Style, 
bool PlotAvg, 
bool PlotMed, 
bool PlotMin, 
bool PlotMax, 
bool PlotSDev, 
bool PlotStdErr, 
const bool& ExpBucket) {
 
  277   TFltPrV AvgV2, MedV, MinV, MaxV, BucketV;
 
  279     TMom Mom(ValMomH[i]);
 
  281     const double x = ValMomH.
GetKey(i);
 
  285       else if (PlotStdErr) {
 
  306   if (! AvgV.
Empty()) { PlotId = 
AddErrBar(AvgV, Label+
" Average", Label+
" StdDev"); }
 
  307   if (! AvgV2.
Empty()) { PlotId = 
AddPlot(AvgV2, SeriesTy, Label+
" Average", Style); }
 
  308   if (! MedV.
Empty()) { PlotId = 
AddPlot(MedV, SeriesTy, Label+
" Median", Style); }
 
  309   if (! MinV.
Empty()) { PlotId = 
AddPlot(MinV, SeriesTy, Label+
" Min", Style); }
 
  310   if (! MaxV.
Empty()) { PlotId = 
AddPlot(MaxV, SeriesTy, Label+
" Max", Style); }
 
  311   if (! StdErrV.
Empty()) { PlotId = 
AddErrBar(StdErrV, Label+
" Average", Label+
" StdErr"); }
 
  315 template <
class TVal1, 
class TVal2>
 
  319   for (
int i = 0; i < ValV.Len(); i++) {
 
  320     IdCntV.
Add(
TFltKd(
double(ValV[i].Val1), 
double(ValV[i].Val2))); }
 
  321   if (IdCntV.Empty()) { printf(
"*** Empty plot %s\n", OutFNmPref.
CStr());  
return; }
 
  326   const int Id = GP.
AddPlot(IdCntV, SeriesTy);
 
  329     double MaxY = IdCntV.Last().Dat, MinY = IdCntV[0].Dat;
 
  330     if (MaxY < MinY) { 
Swap(MaxY, MinY); }
 
  337 template <
class TVal1, 
class TVal2, 
class TVal3>
 
  339                         const TStr& XLabel, 
const TStr& YLabel, 
const TGpScaleTy& ScaleTy, 
const bool& PowerFit,
 
  342   TFltV DeltaYV(ValV.Len(), 0);
 
  343   for (
int i = 0; i < ValV.Len(); i++) {
 
  344     IdCntV.
Add(
TFltKd(
double(ValV[i].Val1), 
double(ValV[i].Val2)));
 
  345     DeltaYV.
Add(
double(ValV[i].Val3));
 
  347   if (IdCntV.Empty()) { printf(
"*** Empty plot %s\n", OutFNmPref.
CStr());  
return; }
 
  352   const int Id = GP.
AddPlot(IdCntV, SeriesTy);
 
  353   GP.
AddErrBar(IdCntV, DeltaYV, ErrBarStr);
 
  356     double MaxY = IdCntV.Last().Dat, MinY = IdCntV[0].Dat;
 
  357     if (MaxY < MinY) { 
Swap(MaxY, MinY); }
 
  364 template <
class TVal1, 
class TVal2>
 
  367                         const TStr& OutFNmPref, 
const TStr& Desc, 
const TStr& XLabel, 
const TStr& YLabel,
 
  369   TFltKdV IdCntV1(ValV1.Len(), 0), IdCntV2(ValV2.Len(), 0);
 
  370   for (
int i = 0; i < ValV1.Len(); i++) {
 
  371     IdCntV1.
Add(
TFltKd(
double(ValV1[i].Val1), 
double(ValV1[i].Val2))); }
 
  372   for (
int i = 0; i < ValV2.Len(); i++) {
 
  373     IdCntV2.Add(
TFltKd(
double(ValV2[i].Val1), 
double(ValV2[i].Val2))); }
 
  374   if (IdCntV1.Empty() || IdCntV2.Empty()) { printf(
"*** Empty plot %s\n", OutFNmPref.
CStr());  
return; }
 
  380   { 
const int Id = GP.
AddPlot(IdCntV1, SeriesTy, Name1);
 
  383     double MaxY = IdCntV1.Last().Dat, MinY = IdCntV1[0].Dat;
 
  384     if (MaxY < MinY) { 
Swap(MaxY, MinY); }
 
  387   { 
const int Id = GP.
AddPlot(IdCntV2, SeriesTy, Name2);
 
  390     double MaxY = IdCntV2.Last().Dat, MinY = IdCntV2[0].Dat;
 
  391     if (MaxY < MinY) { 
Swap(MaxY, MinY); }
 
  397 template <
class TVal1>
 
  401   for (
int i = 0; i < ValV.
Len(); i++) {
 
  402     IdCntV.
Add(
TFltKd(
double(i+1), 
double(ValV[i]))); }
 
  403   if (IdCntV.Empty()) { printf(
"*** Empty plot %s\n", OutFNmPref.
CStr());  
return; }
 
  408   const int Id = GP.
AddPlot(IdCntV, SeriesTy);
 
  411     double MaxY = IdCntV.Last().Dat, MinY = IdCntV[0].Dat;
 
  412     if (MaxY < MinY) { 
Swap(MaxY, MinY); }
 
  419 template <
class TKey, 
class TVal, 
class THashFunc>
 
  425     ValV.
Add(
double(ValCntH[i])); }
 
  427   for (
int i = 0; i < ValV.Len(); i++) {
 
  428     IdCntV.Add(
TFltPr(i+1, ValV[i]));
 
  430   PlotValV(IdCntV, OutFNmPref, Desc, XLabel, YLabel, ScaleTy, PowerFit, SeriesTy);
 
  433 template <
class TKey, 
class TVal, 
class THashFunc>
 
  435                            const TStr& XLabel, 
const TStr& YLabel, 
const TGpScaleTy& ScaleTy, 
const bool& PowerFit,
 
  436                            const TGpSeriesTy& SeriesTy, 
const bool& PlotCCDF, 
const bool& ExpBucket) {
 
  443     BucketV.Swap(IdCntV);
 
  447     for (
int i = NCdfV.
Len()-2; i >= 0; i--) {
 
  448       NCdfV[i].Val2 = NCdfV[i].Val2 + NCdfV[i+1].Val2;
 
  450     PlotValV(NCdfV, OutFNmPref, Desc, 
"NCDF "+XLabel, 
"NCDF "+YLabel, ScaleTy, PowerFit, SeriesTy);
 
  452     PlotValV(IdCntV, OutFNmPref, Desc, XLabel, YLabel, ScaleTy, PowerFit, SeriesTy);
 
  456 template <
class TKey, 
class TVal, 
class THashFunc>
 
  459                            const TStr& OutFNmPref, 
const TStr& Desc, 
const TStr& XLabel, 
const TStr& YLabel,
 
  461   PlotValCntH(ValCntH1, Label1, ValCntH2, Label2, 
THash<TKey, TVal, THashFunc>(), 
"", OutFNmPref, Desc, XLabel, YLabel,
 
  465 template <
class TKey, 
class TVal, 
class THashFunc>
 
  469                            const TStr& OutFNmPref, 
const TStr& Desc, 
const TStr& XLabel, 
const TStr& YLabel,
 
  471   TFltPrV IdCntV1(ValCntH1.
Len(), 0), IdCntV2(ValCntH2.
Len(), 0), IdCntV3(ValCntH3.
Len(), 0);
 
  473     IdCntV1.
Add(
TFltPr(
double(ValCntH1.
GetKey(i)), 
double(ValCntH1[i]))); }
 
  475     IdCntV2.Add(
TFltPr(
double(ValCntH2.
GetKey(i)), 
double(ValCntH2[i]))); }
 
  477     IdCntV3.Add(
TFltPr(
double(ValCntH3.
GetKey(i)), 
double(ValCntH3[i]))); }
 
  484   if (! IdCntV1.Empty()) { GP.
AddPlot(IdCntV1, SeriesTy, Label1); }
 
  485   if (! IdCntV2.Empty()) { GP.
AddPlot(IdCntV2, SeriesTy, Label2); }
 
  486   if (! IdCntV3.Empty()) { GP.
AddPlot(IdCntV3, SeriesTy, Label3); }
 
  490 template <
class TVal1>
 
  493                            bool PlotAvg, 
bool PlotMed, 
bool PlotMin, 
bool PlotMax, 
bool PlotSDev, 
bool PlotStdErr,
 
  496   TFltPrV AvgV2, MedV, MinV, MaxV;
 
  499     TMom Mom(ValMomH[i]);
 
  501     const double x = ValMomH.
GetKey(i);
 
  517       for (
int xi = 0; xi < ValMomH[i].GetVals(); xi++) {
 
  518         PointSet.
AddKey(ValMomH[i].GetVal(xi)); }
 
  520       for (
int xi = 0; xi < PointSet.
Len(); xi++) {
 
  532   if (! AvgV2.
Empty()) { GP.
AddPlot(AvgV2, SeriesTy, 
"Average"); }
 
  533   if (! MedV.
Empty()) { GP.
AddPlot(MedV, SeriesTy, 
"Median"); }
 
  534   if (! MinV.
Empty()) { GP.
AddPlot(MinV, SeriesTy, 
"Min"); }
 
  535   if (! MaxV.
Empty()) { GP.
AddPlot(MaxV, SeriesTy, 
"Max"); }
 
  536   if (! StdErrV.
Empty()) { GP.
AddErrBar(StdErrV, 
"Standard error"); }
 
  540 template <
class TVal1>
 
  543                            const TStr& OutFNmPref, 
const TStr& Desc, 
const TStr& XLabel,
 
  545                            bool PlotMed, 
bool PlotMin, 
bool PlotMax, 
bool PlotSDev, 
bool PlotStdErr, 
bool PlotScatter) {
 
  546   TFltTrV AvgV1, AvgV2, StdErrV1, StdErrV2;
 
  547   TFltPrV AvgVM1, MedV1, MinV1, MaxV1;
 
  548   TFltPrV AvgVM2, MedV2, MinV2, MaxV2;
 
  552     TMom Mom(ValMomH1[i]);
 
  554     const double x = ValMomH1.
GetKey(i);
 
  570       for (
int xi = 0; xi < ValMomH1[i].GetVals(); xi++) {
 
  571         PointSet.
AddKey(ValMomH1[i].GetVal(xi)); }
 
  572       for (
int xi = 0; xi < PointSet.
Len(); xi++) {
 
  573         ScatterV1.
Add(
TFltPr(x, PointSet[xi]));  }
 
  579     TMom Mom(ValMomH2[i]);
 
  581     const double x = ValMomH2.
GetKey(i);
 
  597       for (
int xi = 0; xi < ValMomH2[i].GetVals(); xi++) {
 
  598         PointSet.
AddKey(ValMomH2[i].GetVal(xi)); }
 
  599       for (
int xi = 0; xi < PointSet.
Len(); xi++) {
 
  600         ScatterV2.
Add(
TFltPr(x, PointSet[xi]));  }
 
  610   if (! AvgV1.
Empty()) { GP.
AddErrBar(AvgV1, Label1+
": Average", Label1+
": StdDev"); }
 
  611   if (! AvgVM1.
Empty()) { GP.
AddPlot(AvgVM1, SeriesTy, Label1+
": Average"); }
 
  612   if (! MedV1.
Empty()) { GP.
AddPlot(MedV1, SeriesTy, Label1+
": Median"); }
 
  613   if (! MinV1.
Empty()) { GP.
AddPlot(MinV1, SeriesTy, Label1+
": Min"); }
 
  614   if (! MaxV1.
Empty()) { GP.
AddPlot(MaxV1, SeriesTy, Label1+
": Max"); }
 
  615   if (! StdErrV1.
Empty()) { GP.
AddErrBar(StdErrV1, Label1+
": Std error"); }
 
  618   if (! AvgV2.
Empty()) { GP.
AddErrBar(AvgV2, Label2+
": Average", Label2+
": StdDev"); }
 
  619   if (! AvgVM2.
Empty()) { GP.
AddPlot(AvgVM2, SeriesTy, Label2+
": Average"); }
 
  620   if (! MedV2.
Empty()) { GP.
AddPlot(MedV2, SeriesTy, Label2+
": Median"); }
 
  621   if (! MinV2.
Empty()) { GP.
AddPlot(MinV2, SeriesTy, Label2+
": Min"); }
 
  622   if (! MaxV2.
Empty()) { GP.
AddPlot(MaxV2, SeriesTy, Label2+
": Max"); }
 
  623   if (! StdErrV2.
Empty()) { GP.
AddErrBar(StdErrV2, Label2+
": Std error"); }
 
  627 template <
class TVal2>
 
  630   if (ValV.Empty()) { printf(
"*** Empty plot %s\n", OutFNmPref.
CStr());  
return; }
 
  636   GP.
AddCmd(
"set xdata time");
 
  637   GP.
AddCmd(
"set timefmt \"%Y-%m-%d-%H:%M:%S\"");
 
  638   GP.
AddCmd(
"set format x \"%Y-%m-%d\\n%H:%M:%S\"");
 
  641   time_t ltime;  time(<ime);
 
  642   char* TimeStr = ctime(<ime);  TimeStr[strlen(TimeStr) - 1] = 0;
 
  645   fprintf(F, 
"# %s (%s)\n", Desc.
CStr(), TimeStr);
 
  647   fprintf(F, 
"#Time\t%s\n", XLabel.
CStr());
 
  648   for (
int i = 0; i < TmpV.
Len(); i++) {
 
  649     fprintf(F, 
"%s\t%g\n", TmpV[i].Val1.GetYmdTmStr2().CStr(), double(TmpV[i].Val2()));
 
  657 template <
class TVal2>
 
  662   PlotValOverTm(TmpV, OutFNmPref, Desc, XLabel, YLabel, ScaleTy, SeriesTy);
 
TGnuPlot & operator=(const TGnuPlot &GnuPlot)
 
int AddLinFit(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const TStr &Style=TStr())
 
int AddExpFit(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const double &FitXOffset=0.0, const TStr &Style=TStr())
 
void SetLineStyle(const int &PlotId, const TStr &StyleStr)
 
static void PlotValOverTm(const TVec< TPair< TSecTm, TVal2 > > &ValV, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
 
bool operator<(const TGpSeries &Gps) const 
 
void SetXRange(const double &Min, const double &Max)
 
static void MakeExpBins(const TFltPrV &XYValV, TFltPrV &ExpXYValV, const double &BinFactor=2, const double &MinYVal=1)
 
void SavePng(const int &SizeX=1000, const int &SizeY=800, const TStr &Comment=TStr())
 
TGnuPlot(const TStr &FileNm="gplot", const TStr &PlotTitle=TStr(), const bool &Grid=true)
 
void SetTitle(const TStr &PlotTitle)
 
void SetYLabel(const TStr &YLabel)
 
TGpSeriesCmp(const TVec< TGpSeries > &_SeriesV)
 
TSizeTy Len() const 
Returns the number of elements in the vector. 
 
bool operator()(const int &Left, const int &Right) const 
 
void SetXYLabel(const TStr &XLabel, const TStr &YLabel)
 
int AddPwrFit3(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const double &MinX=-1.0, const TStr &Style=TStr())
 
static void PlotCntOverTm(const THash< TSecTm, TVal2 > &CntH, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
 
TKeyDat< TFlt, TFlt > TFltKd
 
void SetDataPlotFNm(const TStr &DatFNm, const TStr &PltFNm)
 
TGpSeries & operator=(const TGpSeries &Gps)
 
void Plot(const TStr &Comment=TStr())
 
TVec< TGpSeries > SeriesV
 
void SetYRange(const double &Min, const double &Max)
 
int AddPwrFit(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const TStr &Style=TStr())
 
bool Empty() const 
Tests whether the vector is empty. 
 
static void LoadTs(const TStr &FNm, TStrV &ColNmV, TVec< TFltKdV > &ColV)
 
static void PlotValMomH(const THash< TVal1, TMom > &ValMomH, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const TGpSeriesTy &SeriesTy=gpwLinesPoints, bool PlotAvg=true, bool PlotMed=true, bool PlotMin=false, bool PlotMax=false, bool PlotSDev=false, bool PlotStdErr=true, bool PlotScatter=false)
 
void Swap(TVec< TVal, TSizeTy > &Vec)
Swaps the contents of the vector with Vec. 
 
static void SaveTs(const TIntKdV &KdV, const TStr &FNm, const TStr &HeadLn=TStr())
 
void AddCmd(const TStr &Cmd)
 
void Sort(const bool &Asc=true)
Sorts the elements of the vector. 
 
TStr GetLineStyle(const int &PlotId) const 
 
static TStr GetSeriesTyStr(const TGpSeriesTy &SeriesTy)
 
const TVec< TGpSeries > & SeriesV
 
bool FNextKeyId(int &KeyId) const 
 
int AddLogFit(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const TStr &Style=TStr())
 
void Pause(const bool &DoPause)
 
int AddKey(const TKey &Key)
 
TTriple< TFlt, TFlt, TFlt > TFltTr
 
TPair< TFlt, TFlt > TFltPr
 
void SaveEps(const int &FontSz=30, const TStr &Comment=TStr())
 
int AddPwrFit2(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const double &MinX=-1.0, const TStr &Style=TStr())
 
int IsSameXCol(const int &CurId, const int &PrevId) const 
 
void SetScale(const TGpScaleTy &GpScaleTy)
 
static TStr Fmt(const char *FmtStr,...)
 
static TStr GnuPlotPath
Path to GnuPlot executable. Set if gnuplot is not found in the PATH. 
 
void GetKeyDatPrV(TVec< TPair< TKey, TDat > > &KeyDatPrV) const 
 
static void PlotValRank(const THash< TKey, TVal, THashFunc > &ValCntH, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
 
int AddPlot(const TIntV &YValV, const TGpSeriesTy &SeriesTy=gpwLinesPoints, const TStr &Label=TStr(), const TStr &Style=TStr())
 
static void PlotValCntH(const THash< TKey, TVal, THashFunc > &ValCntH, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints, const bool &PlotCCDF=false, const bool &ExpBucket=false)
 
void ShowGrid(const bool &Show)
 
static TStr GetScaleStr(const TGpScaleTy &ScaleTy)
 
int AddPwrFit1(const int &PlotId, const TGpSeriesTy &SeriesTy=gpwLines, const TStr &Style=TStr())
 
int AddErrBar(const TFltTrV &XYDValV, const TStr &Label=TStr())
 
TStr GetSeriesPlotStr(const int &PlotN)
 
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element. 
 
static TStr GnuPlotFNm
GnuPlot executable file name. Set if different than the standard wgnuplot/gnuplot. 
 
void CreatePlotFile(const TStr &Comment=TStr())
 
int AddFunc(const TStr &FuncStr, const TGpSeriesTy &SeriesTy=gpwLinesPoints, const TStr &Label=TStr(), const TStr &Style=TStr())
 
void SetXLabel(const TStr &XLabel)
 
static void PlotValV(const TVec< TVal1 > &ValV, const TStr &OutFNmPref, const TStr &Desc="", const TStr &XLabel="", const TStr &YLabel="", const TGpScaleTy &ScaleTy=gpsAuto, const bool &PowerFit=false, const TGpSeriesTy &SeriesTy=gpwLinesPoints)
 
const TKey & GetKey(const int &KeyId) const 
 
void Swap(TRec &Rec1, TRec &Rec2)