From c7b739a2ce0b378a03b5ccd2066378459820fb6f Mon Sep 17 00:00:00 2001 From: Angelos Chatzimparmpas Date: Tue, 12 Feb 2019 15:49:22 +0100 Subject: [PATCH] fixed small issues --- css/style.css | 1 + js/tsne_vis.js | 455 +++---------------------------------------------- lasso.js | 2 +- 3 files changed, 28 insertions(+), 430 deletions(-) diff --git a/css/style.css b/css/style.css index 49010cc..49fd740 100755 --- a/css/style.css +++ b/css/style.css @@ -134,6 +134,7 @@ cursor: default; width: 50vw; height: 50vw; opacity: 1.0; + margin-left:15px; position:absolute; z-index: 2; } diff --git a/js/tsne_vis.js b/js/tsne_vis.js index c0445db..132f462 100755 --- a/js/tsne_vis.js +++ b/js/tsne_vis.js @@ -426,6 +426,7 @@ function updateEmbedding() { .range([10, +dimensions-10]); for(var i = 0; i < final_dataset.length; i++) { + x_position[i] = x(Y[i][0]); y_position[i] = y(Y[i][1]); points[i] = {id: i, x: x_position[i], y: y_position[i], beta: final_dataset[i].beta, cost: final_dataset[i].cost, selected: true, DimON: null, starplot: false}; @@ -636,7 +637,9 @@ function step() { else { clearInterval(runner); } - updateEmbedding(); + if (step_counter == max_counter){ + updateEmbedding(); + } } function resize(canvas) { @@ -891,6 +894,7 @@ function handleLassoEnd(lassoPolygon) { var countLassoFalse = 0; KNNEnabled = true; for (var i = 0 ; i < points.length ; i ++) { + x = points[i].x; y = points[i].y; if (d3.polygonContains(lassoPolygon, [x, y])){ @@ -1989,10 +1993,9 @@ function BetatSNE(points){ var colorScale = d3.scaleLinear() .domain(d3.range(0, max+calcStep, calcStep)) .range(colorbrewer); - - /*points = points.sort(function(a, b) { + points = points.sort(function(a, b) { return a.beta - b.beta; - })*/ + }) var labels_beta = []; var abbr_labels_beta = []; labels_beta = d3.range(0, max+calcStep, calcStep); @@ -2031,10 +2034,10 @@ var calcStep = (max-min)/9; var colorScale = d3.scaleLinear() .domain(d3.range(min, max, calcStep)) .range(colorbrewer); - - /*points = points.sort(function(a, b) { + + points = points.sort(function(a, b) { return a.cost - b.cost; - })*/ + }) var labels_cost = []; var abbr_labels_cost = []; @@ -2078,6 +2081,7 @@ let zoom = d3.zoom() }); view = d3.select(renderer.domElement); + function setUpZoom() { view.call(zoom); let initial_scale = getScaleFromZ(far); @@ -2086,7 +2090,9 @@ function setUpZoom() { camera.position.set(0, 0, far); } +//if(step_counter == max_counter){ setUpZoom(); +//} var circle_sprite= new THREE.TextureLoader().load( "./textures/circle-sprite.png" @@ -2167,9 +2173,9 @@ if (points[i].DimON != null) { } if (tempSort != -1){ -/*points = points.sort(function(a, b) { +points = points.sort(function(a, b) { return a[tempSort] - b[tempSort]; -})*/ +}) } var temporal = 0; @@ -2298,6 +2304,15 @@ function checkIntersects(mouse_position) { raycaster.setFromCamera(mouse_vector, camera); let intersects = raycaster.intersectObject(particles); if (intersects[0]) { + if (ColSizeSelector == "color"){ + points = points.sort(function(a, b) { + return a.beta - b.beta; + }) + } else{ + points = points.sort(function(a, b) { + return a.cost - b.cost; + }) + } let sorted_intersects = sortIntersectsByDistanceToRay(intersects); let intersect = sorted_intersects[0]; let index = intersect.index; @@ -2321,6 +2336,7 @@ function highlightPoint(datum) { removeHighlights(); let geometry = new THREE.Geometry(); + geometry.vertices.push( new THREE.Vector3( (((datum.x/dimensions)*2) - 1)*dimensions, @@ -2444,423 +2460,4 @@ function hideTooltip() { viewPortHeight = document.getElementsByTagName('body')[0].clientHeight } return [viewPortWidth, viewPortHeight]; - } - - - - /* - var canvas = document.getElementById('modtSNEcanvas'); - var gl = canvas.getContext('webgl'); - // If we don't have a GL context, give up now - - if (!gl) { - alert('Unable to initialize WebGL. Your browser or machine may not support it.'); - return; - } - - var ColSizeSelector = document.getElementById("param-neighborHood").value; - - if (ColSizeSelector == "color") { - var max = (d3.max(final_dataset,function(d){ return d.beta; })); - var min = (d3.min(final_dataset,function(d){ return d.beta; })); - // colors - var colorbrewer = ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]; - var calcStep = (max-min)/7; - var colorScale = d3.scaleLinear() - .domain(d3.range(0, max+calcStep, calcStep)) - .range(colorbrewer); - - var maxSize1 = (d3.max(final_dataset,function(d){ return d.cost; })); - var minSize1 = (d3.min(final_dataset,function(d){ return d.cost; })); - - var rscale1 = d3.scaleLinear() - .domain([minSize1, maxSize1]) - .range([5,10]); - - var colorScale = d3.scaleLinear() - .domain(d3.range(0, max+calcStep, calcStep)) - .range(colorbrewer); - - points = points.sort(function(a, b) { - return a.beta - b.beta; - }) - var labels_beta = []; - var abbr_labels_beta = []; - labels_beta = d3.range(0, max+calcStep, calcStep); - for (var i=0; i<9; i++){ - labels_beta[i] = parseInt(labels_beta[i]); - abbr_labels_beta[i] = abbreviateNumber(labels_beta[i]); - } - var svg = d3.select("#legend1"); - - svg.append("g") - .attr("class", "legendLinear") - .attr("transform", "translate(10,15)"); - - var legend = d3.legendColor() - .labelFormat(d3.format(",.0f")) - .cells(9) - .labels([abbr_labels_beta[0],abbr_labels_beta[1],abbr_labels_beta[2],abbr_labels_beta[3],abbr_labels_beta[4],abbr_labels_beta[5],abbr_labels_beta[6],abbr_labels_beta[7],abbr_labels_beta[8]]) - .title("1 / sigma") - .scale(colorScale); - - svg.select(".legendLinear") - .call(legend); - } else { - var max = (d3.max(final_dataset,function(d){ return d.cost; })); - var min = (d3.min(final_dataset,function(d){ return d.cost; })); - - var maxSize2 = (d3.max(final_dataset,function(d){ return d.beta; })); - var minSize2 = (d3.min(final_dataset,function(d){ return d.beta; })); - - var rscale2 = d3.scaleLinear() - .domain([minSize2, maxSize2]) - .range([5,10]); - - var colorbrewer = ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"]; - var calcStep = (max-min)/9; - var colorScale = d3.scaleLinear() - .domain(d3.range(min, max, calcStep)) - .range(colorbrewer); - - points = points.sort(function(a, b) { - return a.cost - b.cost; - }) - - var labels_cost = []; - var abbr_labels_cost = []; - labels_cost = d3.range(min, max, calcStep); - for (var i=0; i<9; i++){ - labels_cost[i] = labels_cost[i].toFixed(5); - abbr_labels_cost[i] = abbreviateNumber(labels_cost[i]); - } - - var svg = d3.select("#legend1"); - - svg.append("g") - .attr("class", "legendLinear") - .attr("transform", "translate(10,15)"); - - var legend = d3.legendColor() - .labelFormat(d3.format(",.5f")) - .cells(9) - .labels([abbr_labels_cost[0],abbr_labels_cost[1],abbr_labels_cost[2],abbr_labels_cost[3],abbr_labels_cost[4],abbr_labels_cost[5],abbr_labels_cost[6],abbr_labels_cost[7],abbr_labels_cost[8]]) - .title("KLD(P||Q)") - .scale(colorScale); - - svg.select(".legendLinear") - .call(legend); - } - - let vertices = []; - let colors = []; - let sizes = new Float32Array(points.length); - let tempSort = -1; - - for (var i=0; i1 to 0->2 - let zeroToTwo = zeroToOne * 2.0; - let zeroToTwo2 = zeroToOne2 * 2.0; - - // convert from 0->2 to -1->+1 (clipspace) - let clipSpace = zeroToTwo - 1.0; - let clipSpace2 = zeroToTwo2 - 1.0; - singleObj = clipSpace; - vertices.push(singleObj); - singleObj = clipSpace2 * -1; - vertices.push(singleObj); - singleObj = 0.0; - vertices.push(singleObj); - } - - for (var i=0; i