Changeset 5149


Ignore:
Timestamp:
Oct 20, 2009, 2:49:09 PM (12 years ago)
Author:
Nicklas Nordborg
Message:

Fixes #1386: Plot function in the bioassay table in experiment explorer

It is now possible to use a bar or line plot.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/clients/web/net/sf/basedb/clients/web/servlet/ExperimentExplorerPlotServlet.java

    r5141 r5149  
    2929import java.awt.font.FontRenderContext;
    3030import java.awt.geom.Rectangle2D;
     31import java.awt.geom.RectangularShape;
    3132import java.awt.image.BufferedImage;
    3233import java.io.IOException;
     
    5859import org.jfree.chart.plot.CategoryPlot;
    5960import org.jfree.chart.plot.Plot;
     61import org.jfree.chart.renderer.category.BarPainter;
     62import org.jfree.chart.renderer.category.BarRenderer;
     63import org.jfree.chart.renderer.category.BarRenderer3D;
    6064import org.jfree.chart.renderer.category.BoxAndWhiskerRenderer;
     65import org.jfree.chart.renderer.category.CategoryItemRenderer;
    6166import org.jfree.chart.renderer.category.LineAndShapeRenderer;
     67import org.jfree.chart.renderer.category.StandardBarPainter;
    6268import org.jfree.chart.title.TextTitle;
    6369import org.jfree.data.category.DefaultCategoryDataset;
    6470import org.jfree.data.statistics.BoxAndWhiskerItem;
    6571import org.jfree.data.statistics.DefaultBoxAndWhiskerCategoryDataset;
     72import org.jfree.ui.RectangleEdge;
    6673
    6774import net.sf.basedb.clients.web.ExperimentExplorer;
     
    134141    final int reporterIndex = Values.getInt(request.getParameter("reporterIndex"));
    135142    final int positionIndex = Values.getInt(request.getParameter("positionIndex"));
    136     final String plotType = Values.getString(request.getParameter("type"), "line");
     143    final String plotType = Values.getString(request.getParameter("type"), "assay");
     144    final String subType = Values.getString(request.getParameter("subtype"), "line");
    137145   
    138146    // Where to deliver the image
     
    207215         
    208216        JFreeChart chart = null;
    209         if ("box".equals(plotType))
     217        if ("annotation".equals(plotType))
    210218        {
    211219          // Collect all spot data values in one list per annotation group
     
    255263          chart = new JFreeChart(plot);
    256264        }
    257         else if ("line".equals(plotType))
     265        else if ("assay".equals(plotType))
    258266        {
    259267          // Load annotation summaries
     
    307315          // Create the plot and chart objects
    308316            categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
    309           Plot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, new LineAndShapeRenderer());
     317            CategoryItemRenderer renderer = null;
     318            if ("line".equals(subType))
     319            {
     320              renderer = new LineAndShapeRenderer();
     321            }
     322            else
     323            {
     324              BarRenderer br = new BarRenderer();
     325              renderer = br;
     326              br.setShadowVisible(false);
     327              br.setBarPainter(new StandardBarPainter());
     328              br.setDrawBarOutline(true);
     329            }
     330          Plot plot = new CategoryPlot(dataset, categoryAxis, valueAxis, renderer);
    310331          chart = new JFreeChart(plot);
    311332        }
  • trunk/www/views/experiments/explorer/view/plotter.jsp

    r5142 r5149  
    7575  final int reporterIndex = Values.getInt(request.getParameter("reporterIndex"));
    7676  final int positionIndex = Values.getInt(request.getParameter("positionIndex"));
    77   final String plotType = Values.getString(request.getParameter("type"), "line");
     77  final String plotType = Values.getString(request.getParameter("type"), "assay");
    7878  final int annotationTypeId = Values.getInt(request.getParameter("annotationTypeId"));
    7979  final boolean needAverageMethod = positionIndex == ExperimentExplorer.SPOT_AVG;
     
    137137  {
    138138    var plotType = getPlotType();
    139     if (plotType == 'line')
    140     {
    141       return validateLinePlot();
    142     }
    143     else if (plotType == 'box')
    144     {
    145       return validateBoxPlot();
     139    if (plotType == 'assay')
     140    {
     141      return validateAssayPlot();
     142    }
     143    else if (plotType == 'annotation')
     144    {
     145      return validateAnnotationPlot();
    146146    }
    147147    return false;
    148148  }
    149149 
    150   function validateLinePlot()
    151   {
    152     var frm = document.forms['line'];
     150  function validateAssayPlot()
     151  {
     152    var frm = document.forms['assay'];
    153153    if (Main.trimString(frm.yFormula.value) == '')
    154154    {
     
    160160  }
    161161 
    162   function validateBoxPlot()
    163   {
    164     var frm = document.forms['box'];
     162  function validateAnnotationPlot()
     163  {
     164    var frm = document.forms['annotation'];
    165165    if (Main.trimString(frm.yFormula.value) == '')
    166166    {
     
    180180  function switchTab(tabControlId, tabId)
    181181  {
    182     if (tabId == 'line' || tabId == 'box')
     182    if (tabId == 'assay' || tabId == 'annotation')
    183183    {
    184184      plotType = tabId;
     
    217217      }
    218218      var plotType = getPlotType();
    219       if (plotType == 'line')
    220       {
    221         var frm = document.forms['line'];
    222         url += '&type=line';
     219      if (plotType == 'assay')
     220      {
     221        var frm = document.forms['assay'];
     222        url += '&type=assay';
     223        url += '&subtype=' + frm.subtype[frm.subtype.selectedIndex].value;
    223224        url += '&y='+Main.encodeURI(frm.yFormula.value);
    224225        url += '&yLog='+(frm.yLog.checked ? 1 : 0);
     
    230231        }
    231232      }
    232       else if (plotType == 'box')
    233       {
    234         var frm = document.forms['box'];
    235         url += '&type=box';
     233      else if (plotType == 'annotation')
     234      {
     235        var frm = document.forms['annotation'];
     236        url += '&type=annotation';
    236237        url += '&y='+Main.encodeURI(frm.yFormula.value);
    237238        url += '&yLog='+(frm.yLog.checked ? 1 : 0);
     
    359360      active="<%=plotType%>" remember="false"
    360361      switch="switchTab">
    361     <t:tab id="line" title="Line plot" helpid="explorer.lineplot"
    362       tooltip="Create a line plot with bioassays along the x axis">
    363       <form name="line">
     362    <t:tab id="assay" title="By bioassay" helpid="explorer.assayplot"
     363      tooltip="Create a line/bar plot with bioassays along the x axis">
     364      <form name="assay">
    364365      <table border="0" cellspacing="0" cellpadding="2" class="form">
     366      <tr>
     367        <td class="prompt">Plot type</td>
     368        <td colspan="2">
     369          <select name="subtype">
     370          <option value="line">Line plot</option>
     371          <option value="bar">Bar plot</option>
     372          </select>
     373      </tr>
    365374      <tr>
    366375        <td class="prompt" colspan="3">Y-axis</td>
     
    385394            image="expression_builder.gif"
    386395            tooltip="Use the Expression builder"
    387             onclick="openExpressionBuilder('Y-axis expression', 'line', 'yFormula', 'COLUMN_EXPRESSION')"
     396            onclick="openExpressionBuilder('Y-axis expression', 'assay', 'yFormula', 'COLUMN_EXPRESSION')"
    388397          />
    389398        </td>
     
    431440      </form>
    432441    </t:tab>
    433     <t:tab id="box" title="Box plot" helpid="explorer.boxplot"
     442    <t:tab id="annotation" title="By annotation" helpid="explorer.annotationplot"
    434443      tooltip="Create a box plot with annotation values along the x axis">
    435       <form name="box">
     444      <form name="annotation">
    436445      <table border="0" cellspacing="0" cellpadding="2" class="form">
    437446      <tr>
     
    457466            image="expression_builder.gif"
    458467            tooltip="Use the Expression builder"
    459             onclick="openExpressionBuilder('Y-axis expression', 'box', 'yFormula', 'COLUMN_EXPRESSION')"
     468            onclick="openExpressionBuilder('Y-axis expression', 'annotation', 'yFormula', 'COLUMN_EXPRESSION')"
    460469          />
    461470        </td>
  • trunk/www/views/experiments/explorer/view/view.jsp

    r5140 r5149  
    254254      }
    255255    }
    256     function plotSpotData()
    257     {
    258       var url = 'plotter.jsp?ID=<%=ID%>&type=line';
     256    function assayPlot()
     257    {
     258      var url = 'plotter.jsp?ID=<%=ID%>&type=assay';
    259259      url += '&bioAssaySetId=<%=bioAssaySetId%>';
    260260      url += '&reporterIndex=<%=reporterIndex%>';
    261261      url += '&positionIndex=<%=positionIndex%>';
    262       Main.openPopup(url, 'SpotPlot', 1100, 700);
    263     }
    264     function boxPlot(annotationType)
    265     {
    266       var url = 'plotter.jsp?ID=<%=ID%>&type=box';
     262      Main.openPopup(url, 'AssayPlot', 1100, 700);
     263    }
     264    function annotationPlot(annotationType)
     265    {
     266      var url = 'plotter.jsp?ID=<%=ID%>&type=annotation';
    267267      url += '&bioAssaySetId=<%=bioAssaySetId%>';
    268268      url += '&reporterIndex=<%=reporterIndex%>';
    269269      url += '&positionIndex=<%=positionIndex%>';
    270270      url += '&annotationTypeId=' + annotationType;
    271       Main.openPopup(url, 'BoxPlot', 1100, 700);
     271      Main.openPopup(url, 'AnnotationPlot', 1100, 700);
    272272    }
    273273  </script>
     
    469469              <td class="summaryheader"><base:icon
    470470                image="plotter.gif"
    471                 onclick="<%="boxPlot(" + at.getId() + ")"%>"
     471                onclick="<%="annotationPlot(" + at.getId() + ")"%>"
    472472                tooltip="Box plot for selected spot data per annotation group"
    473473              /></td>
     
    736736        <tbl:button
    737737          image="plotter.gif"
    738           onclick="plotSpotData()"
     738          onclick="assayPlot()"
    739739          title="Plot&hellip;"
    740740          tooltip="Plot selected data from this table"
Note: See TracChangeset for help on using the changeset viewer.