d3.select('#theButton').on('click', function(){
let randomNumber = Math.floor(Math.random()*25)
mydata.push(randomNumber)
console.log(mydata)
x_scale.domain(d3.range(mydata.length))
y_scale.domain([0, d3.max(mydata, function(d){
return d
})])
var bars = svg.selectAll('rect')
.data(mydata)
bars.enter()
.append('rect')
.attr('x', chart_width - x_scale.bandwidth())
.attr('y', function(d){
return chart_height - y_scale(d)
})
.attr('width', x_scale.bandwidth())
.attr('height', function(d){
return y_scale(d) - y_scale(0)
})
.attr('fill', 'red')
.merge(bars)
.transition()
.duration(1000)
.delay(function(d, i){
return i/mydata.length * 1000
})
.ease(d3.easeElasticOut)
.attr('x', function(d, i){
return x_scale(i)
})
.attr('y', function(d){
return chart_height - y_scale(d)
})
.attr('width', x_scale.bandwidth())
.attr('height', function(d){
return y_scale(d) - y_scale(0)
})
.attr('fill', 'red')
var myTexts = svg.selectAll('text')
.data(mydata)
myTexts.enter()
.append('text')
.text(function(d){
return d
})
.attr('x', chart_width - x_scale.bandwidth())
.attr('y', function(d){
if(d<3){
return chart_height - y_scale(d)
} else {
return chart_height - y_scale(d)+15
}
})
.attr('fill', 'black')
.attr('text-anchor', 'middle')
.merge(myTexts)
.transition()
.duration(1000)
.delay(function(d, i){
return i/mydata.length * 1000
})
.attr('x', function(d, i){
return x_scale(i) + x_scale.bandwidth()/2
})
.attr('y', function(d){
if(d<3){
return chart_height - y_scale(d)
} else {
return chart_height - y_scale(d)+15
}
})
.attr('fill', 'black')
.attr('text-anchor', 'middle')
return svg.node()
})