chart = {
const svg = d3.create('svg').attr('width', layout.width).attr('height', layout.height)
const g = svg.append('g').attr('transform',`translate(${layout.margin.left},${layout.margin.top})`)
const chartG = g.append('g').attr('id', 'chart')
const axisG = g.append('g').attr('id', 'axis')
g.append('rect')
.attr('width', layout.innerWidth)
.attr('height', layout.innerHeight)
.attr('fill','none')
.attr('stroke', '#CC398C')
.attr('visibility', ()=>showFrame?'visible':'hidden')
chartG.append('g')
.selectAll('g')
.data(data)
.join('rect')
.attr('x', d=>Xscale(d['name']))
.attr('y', d=>Yscale(d['num']))
.attr('width', Xscale.bandwidth)
.attr('height', d=> layout.innerHeight - Yscale(d['num']))
.attr('fill', '#3370EB')
.attr('rx',2).attr('ry',2)
chartG.raise()
axisG.append('g')
.attr('class', 'x-axis')
.attr('transform', `translate(0,${layout.innerHeight})`)
.call(Xaxis)
axisG.append('g')
.attr('class', 'y-axis')
.call(Yaxis)
.call(g=>{
g.selectAll('.tick line')
.attr("x2", layout.innerWidth)
.attr("stroke-opacity", 0.15)
})
.call(g=>{
g.selectAll('.domain').remove()
})
return svg.node()
}