Changeset 878 for trunk/lib


Ignore:
Timestamp:
Nov 23, 2009, 11:40:49 PM (12 years ago)
Author:
Jari Häkkinen
Message:

Addresses #402. Legends in place. Not the same order as wih gnuplot.

Location:
trunk/lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Graph.cc

    r875 r878  
    6161
    6262
    63   void Graph::plot(const std::vector<unsigned int>& y, const std::string& format)
     63  void Graph::plot(const std::vector<unsigned int>& y, const std::string& legend,
     64                   const std::string& timeformat)
    6465  {
    6566    unsigned int xmin= date_xticks() ? Date(xticks_.front()).seconds() : 0;
     
    7374
    7475      if (date_xticks())
    75         pls_.timefmt(format.c_str());
     76        pls_.timefmt(timeformat.c_str());
    7677
    7778      unsigned int ytickspacing=tick_spacing(yrange_);
     
    7980      pls_.box("bcnstd", xtickspacing, 1, "bcnstv", ytickspacing, 2);
    8081      pls_.lab("Date", "Number of lines", title_.c_str());
    81 
    82       pls_.col0(1);
    8382    }
    8483    ++plots_;
     84
     85    print_legend(xmin,0,xmax,yrange_,legend);
     86    pls_.col0(1);
    8587    for (unsigned int i=1; i<y.size(); ++i) {
    8688      PLFLT x0=i-1;
     
    9395      pls_.join(x0, y[i]  , x1, y[i]);
    9496    }
     97  }
     98
     99
     100  void Graph::print_legend(PLFLT xmin, PLFLT ymin, PLFLT xmax, PLFLT ymax,
     101                           const std::string& legend)
     102  {
     103    PLFLT xrange=(xmax-xmin);
     104    PLFLT length=0.05*xrange;
     105    PLFLT dx=0.01*xrange;
     106    PLFLT x=4*dx+xmin+length;
     107    PLFLT y=(1.-0.05*plots_)*ymax;
     108    pls_.col0(1);
     109    pls_.join(x-dx, y, x-dx-length, y);
     110    pls_.col0(2);
     111    pls_.ptex(x, y, 0, 0, 0, legend.c_str());
    95112  }
    96113
  • trunk/lib/Graph.h

    r875 r878  
    4141       more output formats than SVG.
    4242    */
    43     Graph(const std::string& filename);
     43    explicit Graph(const std::string& filename);
    4444
    4545    /**
     
    5656
    5757    /**
    58        \brief Plot \a data using \a format for x-axis values when
     58       \brief Plot \a data using \a timeformat for x-axis values when
    5959       dates are used.
    6060    */
    61     void plot(const std::vector<unsigned int>& data,
    62               const std::string& format="%y-%b");
    63 
     61    void plot(const std::vector<unsigned int>& data, const std::string& legend,
     62              const std::string& timeformat="%y-%b");
    6463
    6564    /**
     
    8685
    8786  private:
     87    void print_legend(PLFLT xmin, PLFLT ymin, PLFLT xmax, PLFLT ymax,
     88                      const std::string& legend);
    8889    unsigned int tick_spacing(const double range) const;
    8990
  • trunk/lib/Stats.cc

    r864 r878  
    391391    for (vec_type::iterator i(author_cont.begin()); i!=end; ++i) {
    392392      ss.str("");
    393       ss << "set key height " << 2*plotno;
    394 //      gp->command(ss.str());
    395       ss.str("");
    396393      ss << get_back(*stat, i->first) << " " << i->first;
    397       gp.yrange(yrange_max);
    398 //      gp->linetitle(ss.str());
    399       ss.str("");
    400       ss << "steps " << --plotno+2;
    401 //      gp->linestyle(ss.str());
    402       // the RGB values below must be replaced ... seg fault will happen!
     394      // the RGB values below must be replaced ... seg fault will
     395      // happen! plotno will probably become unused when below row is
     396      // removed or fixed.
    403397      gp.current_colour(25*plotno,255-25*plotno,75);
    404       gp.plot(i->second);
     398      gp.plot(i->second, ss.str());
    405399    }
    406400    ss.str("");
    407401    ss << get_back(*stat, "all") << " total";
    408 //    gp->command("set key height 0");
    409 //    gp->linetitle(ss.str());
    410402    gp.current_colour(255,0,0);
    411     gp.plot(total);
     403    gp.plot(total, ss.str());
    412404
    413405    return filename;
     
    426418    std::vector<unsigned int> x(get_vector(code_stats(), "all"));
    427419    ss << x.back() << " code";
    428 //    gp->command("set key height 2");
    429 //    gp->linetitle(ss.str());
    430420    gp.current_colour(255,255,0);
    431     gp.plot(x);
     421    gp.plot(x, ss.str());
    432422
    433423    ss.str("");
    434424    x = get_vector(comment_or_copy_stats(), "all");
    435425    ss << x.back() << " comment";
    436 //    gp->command("set key height 4");
    437 //    gp->linetitle(ss.str());
    438426    gp.current_colour(0,0,255);
    439     gp.plot(x);
     427    gp.plot(x, ss.str());
    440428
    441429    ss.str("");
    442430    x = get_vector(other_stats(), "all");
    443431    ss << x.back() << " other";
    444 //    gp->command("set key height 6");
    445 //    gp->linetitle(ss.str());
    446432    gp.current_colour(0,255,0);
    447     gp.plot(x);
     433    gp.plot(x, ss.str());
    448434
    449435    ss.str("");
    450436    ss << total.back() << " total";
    451 //    gp->command("set key height 0");
    452 //    gp->linetitle(ss.str());
    453437    gp.current_colour(255,0,0);
    454     gp.plot(total);
     438    gp.plot(total, ss.str());
    455439  }
    456440
Note: See TracChangeset for help on using the changeset viewer.