block by NPashaP bd91bfb60409014f2cee791bdb2c8e58

Viz - Area - Line - Point - Transition

Full Screen

index.html

<!DOCTYPE html>
  <head>
    <meta charset="utf-8">
  </head>
<style>
.viz-area .area{
  fill: #90d7e9;
  fill-opacity:0.5;
  stroke: none;
}
.viz-line .line{
  fill: none;
  stroke: #01a9d4;
  stroke-width:3px;
}
.viz-point .point{
  fill: white;
  stroke: #01a9d4;
  stroke-width:3px;
}
</style>
<body>
<svg width="960" height="600">
<g transform="translate(50,50)"></g>
</svg>

<script src="https://d3js.org/d3.v4.min.js"></script>
<script src="//vizjs.org/viz.v1.3.0.min.js"></script>

<script>
var area = viz.area()
	.data(randomData())
	.curve(d3.curveCardinal)

var line = viz.line().data(area.data())
	.value(function(d){ return d.value;})
	.valueScale(area.valueScale())
	.curve(area.curve())
		
var point = viz.point().data(area.data())
	.value(function(d){ return d.value;})
	.valueScale(area.valueScale())
	.drawPoints(drawPoints)

d3.select("g").call(area).call(line).call(point);

setInterval(update,2000);

function randomData(){
	return d3.range(20).map(function(i){ return {key:i, value: Math.random()}; });
}

function drawPoints(){
	d3.select(this).append("circle").attr("r",5)
}

function update(){ 
	area.data(randomData())
		.keyScale(undefined)
		.valueScale(undefined)  //reset the yScale so that it will be recomputed.
	
	area.transition();
	line.data(area.data()).keyScale(area.keyScale()).valueScale(area.valueScale()).transition();
	point.data(area.data()).keyScale(area.keyScale()).valueScale(area.valueScale()).transition();
}

</script>