JSFiddle - React, Tailwind, and code Playground

HTML

<button id="btn">Click</button>
<div id="chart" />

CSS

body {
    font: 10px sans-serif;
}
.axis path, .axis line {
    fill: none;
    stroke: #000;
    shape-rendering: crispEdges;
}
.x.axis path {
    /*display: none;*/
}
.line {
    fill: none;
    stroke: steelblue;
    stroke-width: 1.5px;
}

JavaScript

var lineData = [{tick: 1361301280000, values: [0, 2, 0.2, 5]},
                {tick: 1361301282000, values: [1, 1, 1, 5.1]},
                {tick: 1361301283000, values: [1.5, 2, 12.3, 5.7]},
                {tick: 1361301284000, values: [2.3, 3, 10, 4.2]},
                {tick: 1361301285000, values: [4, 4, 10.5, 9.1]},
                {tick: 1361301286000, values: [0.4, 8, 10.7, 9.2]}
                ];

var tick = d3.max(lineData, function(d) { return d.tick; });

var width = 500; var height = 300;
var maxElements = 60;
var margin = {top: 20, right: 80, bottom: 30, left: 50};
    width = width - margin.left - margin.right;
    height = height - margin.top - margin.bottom;

function pushNewData()
{
	var array = [];
    for(i = 0; i < 4; i++)
        array.push((i*5)+Math.random() * 5);
    
    tick += 1000;
    lineData.push({
        tick: tick,
        values: array
    });
}

for(var a = lineData.length; a < maxElements - 10; a++)
	pushNewData();

function getStartTick(data)
{
	return d3.min(data, function(d) { return d.tick; }) - (maxElements - data.length) * 1000;
}

var color = d3.scale.category10().domain([0, 1, 2, 3]);

var svg = d3.select("#chart").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
  .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

function render(data)
{
	var startTick = getStartTick(data);
    var x = d3.time.scale().range([0, width]);
    x.domain([startTick, d3.max(data, function(d) { return d.tick; })]);
    console.log(x.ticks());
    var xAxis = d3.svg.axis()
        .scale(x)
        .orient("bottom")
        .ticks(5);
    
    var y = d3.scale.linear()
        .range([height, 0]);
    
      y.domain([
        d3.min(data, function(c) { return d3.min(c.values, function(v) { return v; }); }),
        d3.max(data, function(c) { return d3.max(c.values, function(v) { return v; }); })
      ]);

    var yAxis =...