 
   # box around the outside
   lowsvg.append("rect")
-     .attr("x", pad)
-     .attr("y", pad)
-     .attr("height", h-2*pad)
-     .attr("width", w-2*pad)
+     .attr("x", pad.left)
+     .attr("y", pad.top)
+     .attr("height", h-pad.bottom-pad.top)
+     .attr("width", w-pad.left-pad.right)
      .attr("stroke", "black")
      .attr("stroke-width", 2)
      .attr("fill", "none")
 
 
+  svg.append("text")
+     .text("Gene expression (mlratio)")
+     .attr("x", pad.left*0.2)
+     .attr("y", h/2)
+     .attr("fill", "blue")
+     .attr("transform", "rotate(270 #{pad.left*0.2} #{h/2})")
+     .attr("dominant-baseline", "middle")
+     .attr("text-anchor", "middle")
+
+  lowsvg.append("text")
+     .text("Gene expression (mlratio)")
+     .attr("x", lowxScale(0))
+     .attr("y", h-pad.bottom*0.2)
+     .attr("fill", "blue")
+     .attr("dominant-baseline", "middle")
+     .attr("text-anchor", "middle")
+
+  svg.append("text")
+     .text("Arrays, sorted by median expression")
+     .attr("x", xScale(data.ind.length/2))
+     .attr("y", h-pad.bottom*0.2)
+     .attr("fill", "blue")
+     .attr("dominant-baseline", "middle")
+     .attr("text-anchor", "middle")
+
 
 # load json file and call draw function
 d3.json("hypo.json", draw)

     .append("text")
     .attr("class", "axis")
     .text((d) -> d)
     .attr("y", h-pad*0.7)
     .attr("x", (d) -> xScale(d))
     .attr("dominant-baseline", "middle")
     .attr("text-anchor", "middle")


  lowyScale = d3.scale.linear()
             .domain([0, maxCount+0.5])
             .range([h-pad.bottom, pad.top])

  # gray background
  lowsvg.append("rect")
     .attr("x", pad.left)
     .attr("y", pad.top)
     .attr("height", h-pad.top-pad.bottom)
     .attr("width", w-pad.left-pad.right)
     .attr("stroke", "none")
     .attr("fill", d3.rgb(200, 200, 200))

