-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjsplotlib.min.js
1 lines (1 loc) · 12.8 KB
/
jsplotlib.min.js
1
(function(){jsplotlib={},jsplotlib.make_chart=function(){var a=0,b=function(b,c,d,e,f){a++;var g=10;d=d||"body",b=b-2*g||500,c=c-2*g||200,f=f||{},"id"in f||(f.id="chart"+a);var h;e?h=d3.select(d).insert("svg",e):h=d3.select(d).append("svg"),h.attr("class","chart").attr("width",b).attr("height",c).attr("chart_count",a);for(var i in f)f.hasOwnProperty(i)&&h.attr(i,f[i]);$(".chart#"+f.id).css("padding",g+"px");return h};return b}(),jsplotlib.construct_axis=function(){var a=0;return function(b,c){var d={};d._id="axis"+a++,d._will_draw_label=!1,d._will_draw_axis=!0,d._x_or_y=c,d._size=0,d._label_offset=0,d._label_string="";if(c==="x")d._axis_proportion=.12,d._label_proportion=.12;else if(c==="y")d._axis_proportion=.07,d._label_proportion=.05;else throw"Invalid axis type (must be x or y): "+this._x_or_y;d._proportion=d._axis_proportion,d.n_ticks=4,d.set_n_ticks=function(a){this.n_ticks=a},d.set_label=function(a){this._label_string=a,this._will_draw_label=!0,this._proportion=this._axis_proportion+this._label_proportion;return this},d._turn_off=function(){this._will_draw_axis=!1;return this},d._turn_on=function(){this._will_draw_axis=!0;return this},d.set_bar_limits=function(a){var b=a[0],c=a[1],d=a[2],e;c instanceof Date?e=new Date(c.getTime()+d):e=c+d,this._set_data_range([b,e])},d._set_data_range=function(a){this._min=a[0],this._max=a[1],this._min instanceof Date||this._max instanceof Date?(this._scale=d3.time.scale(),this._min=new Date(this._min),this._max=new Date(this._max)):this._scale=d3.scale.linear(),this._domain=[this._min,this._max];return this},d._set_formatter=function(a){this._formatter=a;return this},d.get_scale=function(){this._x_or_y==="x"?this._range=[b._yaxis._size,b._chartwidth]:this._x_or_y==="y"&&(this._range=[b._height,b._title_size]),this._scale.domain(this._domain).range(this._range);return this._scale},d._init=function(a){var c;if(this._will_draw_axis){if(this._x_or_y==="x")c=b._chartheight;else if(this._x_or_y==="y")c=b._chartwidth;else throw"Invalid axis type (must be x or y): "+this._x_or_y;this._size=c*this._proportion,console.log(c),console.log(this._size),this._label_offset=this._size*this._label_proportion}else this._size=0;return this},d._compute_transform_string=function(){var a,c,d,e,f="";if(this._x_or_y==="x")a=0,c=b._height,d=b._yaxis._size+b._chartwidth/2,e=b._height+this._size-this._label_offset,this._writing_mode="lr-tb",this._orientation="bottom";else if(this._x_or_y==="y")a=this._size,c=0,d=this._label_offset,e=b._chartheight/2,f="rotate(180)",this._writing_mode="tb-rl",this._orientation="left";else throw"Invalid axis type (must be x or y): "+this._x_or_y;this._transform_string="translate("+a+","+c+")scale(1,1)",this._label_transform_string="translate("+d+","+e+")"+f},d._draw_axis=function(){this._will_draw_axis&&(this._formatter=this._formatter||this.get_scale().tickFormat(this.n_ticks),this._compute_transform_string(),this._axis=d3.svg.axis().scale(this.get_scale()).ticks(this.n_ticks).orient(this._orientation).tickSubdivide(0).tickFormat(this._formatter),b.chart.append("svg:g").attr("id",this._id).attr("class",this._x_or_y+" axis").attr("transform",this._transform_string).call(this._axis))},d._draw_label=function(){console.log("Drawing label"),this._compute_transform_string(),this._will_draw_axis&&this._will_draw_label&&b.chart.append("svg:g").attr("class",this._x_or_y+" axis_label").attr("transform",this._label_transform_string).append("text").append("tspan").attr("text-anchor","middle").attr("class",this._x_or_y+" axis_label").attr("writing-mode",this._writing_mode).text(this._label_string)};return d}}(),jsplotlib.construct_graph=function(b){var c={chart:b};c._chartheight=parseInt(b.attr("height"),10),c._chartwidth=parseInt(b.attr("width")),c._title_string="",c._title_size=0,c._xaxis=jsplotlib.construct_axis(c,"x"),c._yaxis=jsplotlib.construct_axis(c,"y"),c._axes=[c._xaxis,c._yaxis],c.data=function(a){this._data=a;return this},c.xlabel=function(a){this._xaxis.set_label(a);return this},c.ylabel=function(a){this._yaxis.set_label(a);return this},c.xaxis_off=function(){this._xaxis._turn_off();return this},c.yaxis_off=function(){this._yaxis._turn_off();return this},c.xaxis_on=function(){this._xaxis._turn_on();return this},c.yaxis_on=function(){this._yaxis._turn_on();return this},c.axis_on=function(){this.yaxis_on(),this.xaxis_on();return this},c.axis_off=function(){this.yaxis_off(),this.xaxis_off();return this},c.title=function(a){this._title_string=a,this._title_size=this._chartheight*.1,this._title_transform_string="translate("+this._chartwidth/2+","+this._title_size/2+")";return this},c._ylimits=function(a){this._yaxis._set_data_range(a);return this},c._xlimits=function(a){this._xaxis._set_data_range(a);return this},c.yformat=function(a){this._yaxis._set_formatter(a);return this},c.xformat=function(a){this._xaxis._set_formatter(a);return this},c.get_yscale=function(){return this._yaxis.get_scale()},c.get_xscale=function(){return this._xaxis.get_scale()},c._init_common=function(){for(var a=0;a<2;a++)this._axes[a]._init(this);this._height=this._chartheight-this._xaxis._size,this._width=this._chartwidth-this._yaxis._size;return this},c._draw_axes=function(){for(var a=0;a<2;a++)this._axes[a]._draw_axis(this),this._axes[a]._draw_label(this);var d="#"+b.attr("id")+" .axis line, #"+b.attr("id")+" .axis path";$(d).css("fill","none").css("stroke","#000"),d3.svg.axis(b),this._title_string!==""&&c.chart.append("svg:g").attr("class","graph_title").attr("transform",this._title_transform_string).append("text").append("tspan").attr("text-anchor","middle").attr("class","graph_title").attr("writing-mode","rl-tb").text(this._title_string);return this};var d=c.chart.attr("id");c.resize_function=function(a,b){return function(){var c=this;while(c.id!==d)c.parentNode.appendChild(c),c=c.parentNode;var e=d3.select(this),f=parseInt(e.attr("x")||"0",10),g=parseInt(e.attr("width"),10),h=parseInt(e.attr("y")||"0",10),i=parseInt(e.attr("height"),10),j,k,l,m;b==="grow"?(e.attr("x_orig",f).attr("y_orig",h).attr("width_orig",g).attr("height_orig",i),j=g*a,k=i*a,l=f-(a-1)*g/2,m=h-(a-1)*i/2):b==="shrink"&&(j=e.attr("width_orig"),k=e.attr("height_orig"),l=e.attr("x_orig"),m=e.attr("y_orig")),e.attr("x",l).attr("y",m).attr("height",k).attr("width",j)}},c.x=function(a){this._x=a,this._xlimits([d3.min(a),d3.max(a)]);return this},c.y=function(a){this._y=a,this._ylimits([d3.min(a),d3.max(a)]);return this},c.xrange=function(b,c,d){this.x(a(b,c,d));return this},c.yrange=function(b,c,d){this.y(a(b,c,d));return this};return c},jsplotlib.imshow=function(a){var b=jsplotlib.construct_graph(a);b.cmap_bounds=function(a,b){this._cmin=a,this._cmax=b,this._color_picker=d3.interpolateRgb(a,b);return this},b.colormap_jet=function(){var a=[d3.interpolateRgb("#000088","#0000ff"),d3.interpolateRgb("#0000ff","#0088ff"),d3.interpolateRgb("#0088ff","#00ffff"),d3.interpolateRgb("#00ffff","#88ff88"),d3.interpolateRgb("#88ff88","#ffff00"),d3.interpolateRgb("#ffff00","#ff8800"),d3.interpolateRgb("#ff8800","#ff0000"),d3.interpolateRgb("#ff0000","#880000")];this._color_picker=function(b){var c=Math.min(Math.floor(b*8),7);return a[c](b*8-c)};return this},b.colormap_gray=function(){this.cmap_bounds("#010101","#fefefe");return this},b.draw=function(){this._init_common(),this._xlimits([0,this._data[0].length]),this._ylimits([this._data.length,0]);var b=this.get_xscale(),c=this.get_yscale(),d=b(1)-b(0),e=c(1)-c(0),f=this._color_picker,g=d3.max(this._data,function(a){return d3.max(a)}),h=d3.min(this._data,function(a){return d3.min(a)}),i=d3.scale.linear().domain([h,g]).range([0,1]);this._rows=a.selectAll("g.img_row").data(this._data).enter().append("g").attr("class","img_row").attr("transform",function(a,b){return"translate(0,"+c(b)+")"}),this._pixels=this._rows.selectAll("g.img_pixel").data(function(a,b){return a}).enter().append("g").attr("class","img_pixel"),this._pixels.append("rect").attr("x",function(a,c){return b(c)}).attr("width",d).attr("height",e).style("fill",function(a,b){return f(i(a))}).on("mouseover",this.resize_function(1.15,"grow")).on("mouseout",this.resize_function(1.15,"shrink"));var j=this._xaxis._formatter||function(a){return a},k=this._yaxis._formatter||function(a){return a};$("#"+a.attr("id")+" rect").tipsy({gravity:"w",html:!0,title:function(){return""+this.__data__}}),this._draw_axes();return this};return b},jsplotlib.pplot=function(a){var b=jsplotlib.construct_graph(a);b.s=function(a){var b=this._y.length||this._x.length;a instanceof Array?(this._s=a,this._s_was_set=!0):(this._s=c(b).map(function(b){return a*b}),this._s_was_set=!1);return this},b.marker_style=function(a){this._marker_style=a;return this},b.line_style=function(a){this._line_style=a;return this},b.draw=function(){this._init_common();var b=!0,c=this._y.length||this._x.length;this._line_style===undefined&&(this._line_style="-"),this._x||this.xrange(1,c,c);if(!this._s){var d;!this._marker_style||this._marker_style==="."?d=0:d=5,this.s(5)}var e=this._x,f=this._s,g=this._y,h=d3.zip(e,g,f),i=d3.zip(h.slice(0,-1),h.slice(1)),j=this.get_xscale(),k=this.get_yscale(),l=this._xaxis._formatter||function(a){return a},m=this._yaxis._formatter||function(a){return a};this._line_containers=a.selectAll("g.pplot_lines").data(i).enter().append("g").attr("class","pplot_lines"),this._line_style==="-"&&(this._lines=this._line_containers.append("line").attr("x1",function(a){return j(a[0][0])}).attr("x2",function(a){return j(a[1][0])}).attr("y1",function(a){return k(a[0][1])}).attr("y2",function(a){return k(a[1][1])}).style("stroke","steelblue").style("stroke-width",2)),this._points=a.selectAll("g.pplot_points").data(h).enter().append("g").attr("x",function(a){return a[0]}).attr("y",function(a){return a[1]}).attr("s",function(a){return a[2]}).attr("class","pplot_points");var b=this._s_was_set;$("#"+a.attr("id")+" g.pplot_points").tipsy({gravity:"nw",html:!0,title:function(){var a=this.__data__,c="("+l(a[0])+","+m(a[1])+")";b&&(c+=": "+a[2]);return c}});switch(this._marker_style){case undefined:case".":case"o":this._markers=this._points.append("circle").attr("cx",function(a){return j(a[0])}).attr("cy",function(a){return k(a[1])}).attr("r",function(a){return a[2]});break;case"x":this._points.append("line").attr("x1",function(a){return j(a[0])-a[2]}).attr("x2",function(a){return j(a[0])+a[2]}).attr("y1",function(a){return k(a[1])-a[2]}).attr("y2",function(a){return k(a[1])+a[2]}),this._points.append("line").attr("x1",function(a){return j(a[0])+a[2]}).attr("x2",function(a){return j(a[0])-a[2]}).attr("y1",function(a){return k(a[1])-a[2]}).attr("y2",function(a){return k(a[1])+a[2]}),this._markers=this._points.selectAll("line").style("stroke-width",2)}var n=function(a){return function(){var b=d3.select(this);b.attr("r")?b.attr("r",b.attr("r")*a):!0}};this._markers.style("stroke","steelblue").style("fill","steelblue").on("mouseover",n(1.25)).on("mouseout",n(.8)),this._draw_axes();return this};return b},jsplotlib.bar_graph=function(a){var b=jsplotlib.construct_graph(a);b.series_labels=function(a){this._series_labels=a;return this},b.barwidth=function(a){this._barwidth=a;return this},b.draw=function(){this._init_common();var b;if(!this._series_labels){b=[];for(var c=0;c<this._data.length;c++)b.push("Series "+c)}else b=this._series_labels;var d=this._yaxis_width,e=this._height,f=this._width,g=this._data[0].length,h=this._width/g;this._x||this.xrange(0,g-1,g),this._barwidth=this._barwidth||this._x[1]-this._x[0],this._xaxis.set_bar_limits([d3.min(this._x),d3.max(this._x),this._barwidth]);var i=this._x,j=this._data.map(function(a){var b=[];for(var c=0;c<a.length;c++)b.push({x:i[c],y:a[c]});return b}),k=d3.layout.stack()(j),l=d3.max(k,function(a){return d3.max(a,function(a){return a.y+a.y0})});this._ylimits([0,l]);var m=this.get_xscale(),n=function(a){return a.y/l*e},o=function(a){return e-(a.y+a.y0)/l*e};this._series=a.selectAll("g.bar_graph_series").data(k).enter().append("g").style("stroke","white").attr("series_label",function(a,c){return b[c]}).attr("class","bar_graph_series"),this._subbars=this._series.selectAll("g.subbar").data(function(a,b){return a}).enter().append("g").attr("class","subbar"),this._rects=this._subbars.append("rect").attr("width",h).attr("x",function(a,b){return m(a.x)}).attr("y",this._height).attr("height",0),this._rects.transition().delay(function(a,b){return b*10}).attr("y",o).attr("height",n),this._rects.on("mouseover",this.resize_function(1.15,"grow")).on("mouseout",this.resize_function(1.15,"shrink"));var p=this._xaxis._formatter||function(a){return a},q=this._yaxis._formatter||function(a){return a};$("#"+a.attr("id")+" rect").tipsy({gravity:"w",html:!0,title:function(){var a=this.__data__,b=""+p(a.x)+": "+q(a.y);return b}}),this._draw_axes();return this};return b};var a=function(a,b,c){var d=d3.scale.linear().domain([1,c]).range([a,b]),e=[];for(var f=1;f<=c;f++){var g=d(f);a instanceof Date&&(g=new Date(g)),e.push(g)}return e},b=function(a){var b=[];for(var c=0;c<a;c++)b.push(c);return b},c=function(a){var b=[];for(var c=0;c<a;c++)b.push(1);return b}})()