about summary refs log tree commit diff
path: root/wqflask/wqflask/static/new/javascript/curvechart.js
diff options
context:
space:
mode:
authorZachary Sloan2014-07-25 16:28:51 +0000
committerZachary Sloan2014-07-25 16:28:51 +0000
commite69c346553bc26c2f1ba8b0d9fc394add9f6784f (patch)
tree1eec23a32cf658d303b28aaba7b4782cc9e38023 /wqflask/wqflask/static/new/javascript/curvechart.js
parentb3058f8c3710c65288d88ed777aa0fcad8429aef (diff)
downloadgenenetwork2-e69c346553bc26c2f1ba8b0d9fc394add9f6784f.tar.gz
Got the heatmap/lodchart combo working
Started working on getting rqtl working as another mapping method
Diffstat (limited to 'wqflask/wqflask/static/new/javascript/curvechart.js')
-rw-r--r--wqflask/wqflask/static/new/javascript/curvechart.js353
1 files changed, 353 insertions, 0 deletions
diff --git a/wqflask/wqflask/static/new/javascript/curvechart.js b/wqflask/wqflask/static/new/javascript/curvechart.js
new file mode 100644
index 00000000..48526c41
--- /dev/null
+++ b/wqflask/wqflask/static/new/javascript/curvechart.js
@@ -0,0 +1,353 @@
+// Generated by CoffeeScript 1.7.1
+var curvechart;
+
+curvechart = function() {
+  var axispos, chart, commonX, curvesSelect, height, margin, nxticks, nyticks, rectcolor, rotate_ylab, strokecolor, strokecolorhilit, strokewidth, strokewidthhilit, title, titlepos, width, xlab, xlim, xscale, xticks, ylab, ylim, yscale, yticks;
+  width = 800;
+  height = 500;
+  margin = {
+    left: 60,
+    top: 40,
+    right: 40,
+    bottom: 40,
+    inner: 5
+  };
+  axispos = {
+    xtitle: 25,
+    ytitle: 30,
+    xlabel: 5,
+    ylabel: 5
+  };
+  titlepos = 20;
+  xlim = null;
+  ylim = null;
+  nxticks = 5;
+  xticks = null;
+  nyticks = 5;
+  yticks = null;
+  rectcolor = "#e6e6e6";
+  strokecolor = null;
+  strokecolorhilit = null;
+  strokewidth = 2;
+  strokewidthhilit = 2;
+  title = "";
+  xlab = "X";
+  ylab = "Y";
+  rotate_ylab = null;
+  yscale = d3.scale.linear();
+  xscale = d3.scale.linear();
+  curvesSelect = null;
+  commonX = true;
+  chart = function(selection) {
+    return selection.each(function(data) {
+      var curve, curves, g, gEnter, group, i, indID, indtip, j, lastpoint, ngroup, points, pointsg, svg, titlegrp, tmp, v, xaxis, xrange, xs, yaxis, yrange, ys, _i, _j, _len, _ref, _ref1, _ref2, _ref3, _results;
+      indID = (_ref = data != null ? data.indID : void 0) != null ? _ref : null;
+      indID = indID != null ? indID : (function() {
+        _results = [];
+        for (var _i = 1, _ref1 = data.data.length; 1 <= _ref1 ? _i <= _ref1 : _i >= _ref1; 1 <= _ref1 ? _i++ : _i--){ _results.push(_i); }
+        return _results;
+      }).apply(this);
+      group = (_ref2 = data != null ? data.group : void 0) != null ? _ref2 : (function() {
+        var _results1;
+        _results1 = [];
+        for (i in data.data) {
+          _results1.push(1);
+        }
+        return _results1;
+      })();
+      ngroup = d3.max(group);
+      group = (function() {
+        var _j, _len, _results1;
+        _results1 = [];
+        for (_j = 0, _len = group.length; _j < _len; _j++) {
+          g = group[_j];
+          _results1.push(g - 1);
+        }
+        return _results1;
+      })();
+      strokecolor = strokecolor != null ? strokecolor : selectGroupColors(ngroup, "pastel");
+      strokecolor = expand2vector(strokecolor, ngroup);
+      strokecolorhilit = strokecolorhilit != null ? strokecolorhilit : selectGroupColors(ngroup, "dark");
+      strokecolorhilit = expand2vector(strokecolorhilit, ngroup);
+      if (commonX) {
+        data = (function() {
+          var _results1;
+          _results1 = [];
+          for (i in data.data) {
+            _results1.push({
+              x: data.x,
+              y: data.data[i]
+            });
+          }
+          return _results1;
+        })();
+      } else {
+        data = data.data;
+      }
+      xlim = xlim != null ? xlim : d3.extent(pullVarAsArray(data, "x"));
+      ylim = ylim != null ? ylim : d3.extent(pullVarAsArray(data, "y"));
+      for (i in data) {
+        tmp = data[i];
+        data[i] = [];
+        for (j in tmp.x) {
+          if (!((tmp.x[j] == null) || (tmp.y[j] == null))) {
+            data[i].push({
+              x: tmp.x[j],
+              y: tmp.y[j]
+            });
+          }
+        }
+      }
+      svg = d3.select(this).selectAll("svg").data([data]);
+      gEnter = svg.enter().append("svg").append("g");
+      svg.attr("width", width + margin.left + margin.right).attr("height", height + margin.top + margin.bottom);
+      g = svg.select("g");
+      g.append("rect").attr("x", margin.left).attr("y", margin.top).attr("height", height).attr("width", width).attr("fill", rectcolor).attr("stroke", "none");
+      xrange = [margin.left + margin.inner, margin.left + width - margin.inner];
+      yrange = [margin.top + height - margin.inner, margin.top + margin.inner];
+      xscale.domain(xlim).range(xrange);
+      yscale.domain(ylim).range(yrange);
+      xs = d3.scale.linear().domain(xlim).range(xrange);
+      ys = d3.scale.linear().domain(ylim).range(yrange);
+      yticks = yticks != null ? yticks : ys.ticks(nyticks);
+      xticks = xticks != null ? xticks : xs.ticks(nxticks);
+      titlegrp = g.append("g").attr("class", "title").append("text").attr("x", margin.left + width / 2).attr("y", margin.top - titlepos).text(title);
+      xaxis = g.append("g").attr("class", "x axis");
+      xaxis.selectAll("empty").data(xticks).enter().append("line").attr("x1", function(d) {
+        return xscale(d);
+      }).attr("x2", function(d) {
+        return xscale(d);
+      }).attr("y1", margin.top).attr("y2", margin.top + height).attr("fill", "none").attr("stroke", "white").attr("stroke-width", 1).style("pointer-events", "none");
+      xaxis.selectAll("empty").data(xticks).enter().append("text").attr("x", function(d) {
+        return xscale(d);
+      }).attr("y", margin.top + height + axispos.xlabel).text(function(d) {
+        return formatAxis(xticks)(d);
+      });
+      xaxis.append("text").attr("class", "title").attr("x", margin.left + width / 2).attr("y", margin.top + height + axispos.xtitle).text(xlab);
+      rotate_ylab = rotate_ylab != null ? rotate_ylab : ylab.length > 1;
+      yaxis = g.append("g").attr("class", "y axis");
+      yaxis.selectAll("empty").data(yticks).enter().append("line").attr("y1", function(d) {
+        return yscale(d);
+      }).attr("y2", function(d) {
+        return yscale(d);
+      }).attr("x1", margin.left).attr("x2", margin.left + width).attr("fill", "none").attr("stroke", "white").attr("stroke-width", 1).style("pointer-events", "none");
+      yaxis.selectAll("empty").data(yticks).enter().append("text").attr("y", function(d) {
+        return yscale(d);
+      }).attr("x", margin.left - axispos.ylabel).text(function(d) {
+        return formatAxis(yticks)(d);
+      });
+      yaxis.append("text").attr("class", "title").attr("y", margin.top + height / 2).attr("x", margin.left - axispos.ytitle).text(ylab).attr("transform", rotate_ylab ? "rotate(270," + (margin.left - axispos.ytitle) + "," + (margin.top + height / 2) + ")" : "");
+      indtip = d3.tip().attr('class', 'd3-tip').html(function(d) {
+        return indID[d];
+      }).direction('e').offset([0, 10]);
+      svg.call(indtip);
+      curve = d3.svg.line().x(function(d) {
+        return xscale(d.x);
+      }).y(function(d) {
+        return yscale(d.y);
+      });
+      curves = g.append("g").attr("id", "curves");
+      curvesSelect = curves.selectAll("empty").data(d3.range(data.length)).enter().append("path").datum(function(d) {
+        return data[d];
+      }).attr("d", curve).attr("class", function(d, i) {
+        return "path" + i;
+      }).attr("fill", "none").attr("stroke", function(d, i) {
+        return strokecolor[group[i]];
+      }).attr("stroke-width", strokewidth).on("mouseover.panel", function(d, i) {
+        var circle;
+        d3.select(this).attr("stroke", strokecolorhilit[group[i]]).moveToFront();
+        circle = d3.select("circle#hiddenpoint" + i);
+        return indtip.show(i, circle.node());
+      }).on("mouseout.panel", function(d, i) {
+        d3.select(this).attr("stroke", strokecolor[group[i]]).moveToBack();
+        return indtip.hide();
+      });
+      lastpoint = (function() {
+        var _results1;
+        _results1 = [];
+        for (i in data) {
+          _results1.push({
+            x: null,
+            y: null
+          });
+        }
+        return _results1;
+      })();
+      for (i in data) {
+        _ref3 = data[i];
+        for (_j = 0, _len = _ref3.length; _j < _len; _j++) {
+          v = _ref3[_j];
+          if ((v.x != null) && (v.y != null)) {
+            lastpoint[i] = v;
+          }
+        }
+      }
+      pointsg = g.append("g").attr("id", "invisiblepoints");
+      points = pointsg.selectAll("empty").data(lastpoint).enter().append("circle").attr("id", function(d, i) {
+        return "hiddenpoint" + i;
+      }).attr("cx", function(d) {
+        return xscale(d.x);
+      }).attr("cy", function(d) {
+        return yscale(d.y);
+      }).attr("r", 1).attr("opacity", 0);
+      return g.append("rect").attr("x", margin.left).attr("y", margin.top).attr("height", height).attr("width", width).attr("fill", "none").attr("stroke", "black").attr("stroke-width", "none");
+    });
+  };
+  chart.width = function(value) {
+    if (!arguments.length) {
+      return width;
+    }
+    width = value;
+    return chart;
+  };
+  chart.height = function(value) {
+    if (!arguments.length) {
+      return height;
+    }
+    height = value;
+    return chart;
+  };
+  chart.margin = function(value) {
+    if (!arguments.length) {
+      return margin;
+    }
+    margin = value;
+    return chart;
+  };
+  chart.axispos = function(value) {
+    if (!arguments.length) {
+      return axispos;
+    }
+    axispos = value;
+    return chart;
+  };
+  chart.titlepos = function(value) {
+    if (!arguments.length) {
+      return titlepos;
+    }
+    titlepos;
+    return chart;
+  };
+  chart.xlim = function(value) {
+    if (!arguments.length) {
+      return xlim;
+    }
+    xlim = value;
+    return chart;
+  };
+  chart.nxticks = function(value) {
+    if (!arguments.length) {
+      return nxticks;
+    }
+    nxticks = value;
+    return chart;
+  };
+  chart.xticks = function(value) {
+    if (!arguments.length) {
+      return xticks;
+    }
+    xticks = value;
+    return chart;
+  };
+  chart.ylim = function(value) {
+    if (!arguments.length) {
+      return ylim;
+    }
+    ylim = value;
+    return chart;
+  };
+  chart.nyticks = function(value) {
+    if (!arguments.length) {
+      return nyticks;
+    }
+    nyticks = value;
+    return chart;
+  };
+  chart.yticks = function(value) {
+    if (!arguments.length) {
+      return yticks;
+    }
+    yticks = value;
+    return chart;
+  };
+  chart.rectcolor = function(value) {
+    if (!arguments.length) {
+      return rectcolor;
+    }
+    rectcolor = value;
+    return chart;
+  };
+  chart.strokecolor = function(value) {
+    if (!arguments.length) {
+      return strokecolor;
+    }
+    strokecolor = value;
+    return chart;
+  };
+  chart.strokecolorhilit = function(value) {
+    if (!arguments.length) {
+      return strokecolorhilit;
+    }
+    strokecolorhilit = value;
+    return chart;
+  };
+  chart.strokewidth = function(value) {
+    if (!arguments.length) {
+      return strokewidth;
+    }
+    strokewidth = value;
+    return chart;
+  };
+  chart.strokewidthhilit = function(value) {
+    if (!arguments.length) {
+      return strokewidthhilit;
+    }
+    strokewidthhilit = value;
+    return chart;
+  };
+  chart.commonX = function(value) {
+    if (!arguments.length) {
+      return commonX;
+    }
+    commonX = value;
+    return chart;
+  };
+  chart.title = function(value) {
+    if (!arguments.length) {
+      return title;
+    }
+    title = value;
+    return chart;
+  };
+  chart.xlab = function(value) {
+    if (!arguments.length) {
+      return xlab;
+    }
+    xlab = value;
+    return chart;
+  };
+  chart.ylab = function(value) {
+    if (!arguments.length) {
+      return ylab;
+    }
+    ylab = value;
+    return chart;
+  };
+  chart.rotate_ylab = function(value) {
+    if (!arguments.length) {
+      return rotate_ylab;
+    }
+    rotate_ylab = value;
+    return chart;
+  };
+  chart.yscale = function() {
+    return yscale;
+  };
+  chart.xscale = function() {
+    return xscale;
+  };
+  chart.curvesSelect = function() {
+    return curvesSelect;
+  };
+  return chart;
+};