t-viSNE: Interactive Assessment and Interpretation of t-SNE Projections
				https://doi.org/10.1109/TVCG.2020.2986996
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							150 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
	
	
							150 lines
						
					
					
						
							3.2 KiB
						
					
					
				<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
  <title>d3.tip.js - Tooltips for D3</title>
 | 
						|
  <meta charset="utf-8" />
 | 
						|
  <title>Example styles</title>
 | 
						|
  <script type="text/javascript" src="../bower_components/d3/d3.js"></script>
 | 
						|
  <script type="text/javascript" src="../index.js"></script>
 | 
						|
  <style type="text/css">
 | 
						|
  body {
 | 
						|
    padding: 40px;
 | 
						|
    font-family: "Helvetica Neue", Helvetica, sans-serif;
 | 
						|
    font-size: 12px;
 | 
						|
    width: 600px;
 | 
						|
  }
 | 
						|
 | 
						|
  svg.n, svg.s {
 | 
						|
    margin-left: 200px;
 | 
						|
    margin-right: 200px;
 | 
						|
  }
 | 
						|
  svg.e {
 | 
						|
    margin-left: 200px;
 | 
						|
  }
 | 
						|
 | 
						|
  .d3-tip {
 | 
						|
    line-height: 1;
 | 
						|
    font-weight: bold;
 | 
						|
    padding: 12px;
 | 
						|
    background: rgba(0, 0, 0, 0.8);
 | 
						|
    color: #fff;
 | 
						|
    border-radius: 2px;
 | 
						|
  }
 | 
						|
 | 
						|
  /* Creates a small triangle extender for the tooltip */
 | 
						|
  .d3-tip:after {
 | 
						|
    box-sizing: border-box;
 | 
						|
    display: inline;
 | 
						|
    font-size: 10px;
 | 
						|
    width: 100%;
 | 
						|
    line-height: 1;
 | 
						|
    color: rgba(0, 0, 0, 0.8);
 | 
						|
    position: absolute;
 | 
						|
  }
 | 
						|
 | 
						|
  /* Nrthward tooltips */
 | 
						|
  .d3-tip.n:after {
 | 
						|
    content: "\25BC";
 | 
						|
    margin: -1px 0 0 0;
 | 
						|
    top: 100%;
 | 
						|
    left: 0;
 | 
						|
    text-align: center;
 | 
						|
  }
 | 
						|
 | 
						|
  /* Eastward tooltips */
 | 
						|
  .d3-tip.e:after {
 | 
						|
    content: "\25C0";
 | 
						|
    margin: -4px 0 0 0;
 | 
						|
    top: 50%;
 | 
						|
    left: -8px;
 | 
						|
  }
 | 
						|
 | 
						|
  /* Southward tooltips */
 | 
						|
  .d3-tip.s:after {
 | 
						|
    content: "\25B2";
 | 
						|
    margin: 0 0 1px 0;
 | 
						|
    top: -8px;
 | 
						|
    left: 0;
 | 
						|
    text-align: center;
 | 
						|
  }
 | 
						|
 | 
						|
  /* Westward tooltips */
 | 
						|
  .d3-tip.w:after {
 | 
						|
    content: "\25B6";
 | 
						|
    margin: -4px 0 0 -1px;
 | 
						|
    top: 50%;
 | 
						|
    left: 100%;
 | 
						|
  }
 | 
						|
 | 
						|
  circle {
 | 
						|
    fill: #ccc;
 | 
						|
    fill-opacity: 0.6;
 | 
						|
    stroke: #bbb;
 | 
						|
    stroke-width: 1px;
 | 
						|
  }
 | 
						|
 | 
						|
  circle:hover {
 | 
						|
    fill: #bbb;
 | 
						|
    stroke: #999;
 | 
						|
  }
 | 
						|
 | 
						|
  text {
 | 
						|
    text-anchor: middle;
 | 
						|
  }
 | 
						|
  </style>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
  <script type="text/javascript">
 | 
						|
    var data = [],
 | 
						|
      random = d3.random.normal(5),
 | 
						|
      random2 = d3.random.irwinHall(1)
 | 
						|
    for(var i = 0; i < 25; i++) data.push(random(i))
 | 
						|
 | 
						|
    var w = 200,
 | 
						|
        h = 200,
 | 
						|
        b = 20,
 | 
						|
        r = 10,
 | 
						|
        x = d3.scale.linear().domain([0, data.length - 1]).range([r, w - r]),
 | 
						|
        y = d3.scale.linear().domain([0, d3.max(data)]).range([h,  0])
 | 
						|
 | 
						|
    var directions = ['n', 'w', 'e', 's'];
 | 
						|
    directions.forEach(function (direction) {
 | 
						|
      var tip = d3.tip()
 | 
						|
        .attr('class', 'd3-tip')
 | 
						|
        .html(function(d) { return d.toFixed(2) })
 | 
						|
        .direction(direction)
 | 
						|
        .offset(function () {
 | 
						|
          if(direction=='n') { return [-10,0] }
 | 
						|
          else if(direction=='s') { return [10,0] }
 | 
						|
          else if(direction=='e') { return [0,10] }
 | 
						|
          else if(direction=='w') { return [0,-10] }
 | 
						|
        })
 | 
						|
 | 
						|
      var vis = d3.select(document.body)
 | 
						|
        .append('svg')
 | 
						|
        .attr('class', direction)
 | 
						|
        .attr('width', w)
 | 
						|
        .attr('height', h)
 | 
						|
      .append('g')
 | 
						|
        .attr('transform', 'translate('+b+','+b+')')
 | 
						|
      .call(tip)
 | 
						|
 | 
						|
      vis.append('text')
 | 
						|
        .attr('class', 'direction')
 | 
						|
        .attr('x', w/2)
 | 
						|
        .attr('y', -b)
 | 
						|
        .attr('dy', '1em')
 | 
						|
        .text('direction: ' + direction)
 | 
						|
 | 
						|
      vis.selectAll('circle')
 | 
						|
        .data(data)
 | 
						|
      .enter().append('circle')
 | 
						|
        .attr('r', function(d, i) { return random2(i) * 10 })
 | 
						|
        .attr('cx', function(d, i) { return x(i) })
 | 
						|
        .attr('cy', y)
 | 
						|
        .on('mouseover', tip.show)
 | 
						|
        .on('mouseout', tip.hide)
 | 
						|
    })
 | 
						|
  </script>
 | 
						|
</body>
 | 
						|
</html>
 | 
						|
 |