private JFreeChart createContourPlot() {
    String title = Settings.getProjectName();
    String xAxisLabel = I18n.tr("Date");
    String yAxisLabel = I18n.tr("Modules");
    String zAxisLabel = I18n.tr("Commit Activity (%)");

    xAxis = new DateAxis(xAxisLabel);
    // xAxis = new HorizontalNumberAxis(xAxisLabel);

    List dirs = content.getDirectories();
    String[] ax = new String[dirs.size()];
    for (int i = 0; i < dirs.size(); i++) {
      ax[i] = (String) ((Directory) dirs.get(i)).getPath();
    }
    yAxis = new AlignedVerticalSymbolicAxis(yAxisLabel, ax);

    zAxis = new ColorBar(zAxisLabel);

    // yAxis.setAutoRangeIncludesZero(false);
    // zAxis.setAutoRangeIncludesZero(false);

    yAxis.setInverted(true);

    yAxis.setLowerMargin(0.0);
    yAxis.setUpperMargin(0.0);

    // zAxis.setInverted(false);
    // zAxis.setTickMarksVisible(true);

    ContourDataset data = createDataset();
    ContourPlot plot = new ContourPlot(data, xAxis, yAxis, zAxis);
    // plot.setRenderAsPoints(true);
    ratio = Math.abs(ratio); // don't use plot units for ratios when x axis is date
    plot.setDataAreaRatio(ratio);

    return new JFreeChart(title, null, plot, false);
  }
 public ModuleActivityChart(CvsContent content) {
   super("mod_changes.png", I18n.tr("Module Development"));
   this.content = content;
   setChart(createContourPlot());
   placeTitle();
 }
 public ActivityByClockTime() {
   super(I18n.tr("Activity by Clock Time"));
   addContent(new ChartElement(charts.getActivityByHourChart()));
   addContent(new ChartElement(charts.getActivityByDayChart()));
 }
 public AuthorActivityReport() {
   super(I18n.tr("Author Activity"));
   addContent(new ChartElement(charts.getAuthorsActivityChart()));
 }
 public LinesOfCodeReport() {
   super(I18n.tr("Lines of Code"));
   addContent(new ChartElement(charts.getLocPerAuthorChart()));
 }