function draw_stacked_bars(div) {
const container = div.append('div')
.style('display','flex')
.style('flex-direction', 'column')
const title = container.append('div')
.append('p')
.text('各员工产品销售额堆叠')
.style('margin', '0 0 0 0')
.style('padding', '18px 16px')
.style('font-family', 'sans-serif')
.style('font-size', '14px')
.style('font-weight', 500)
.style('color', dashboardStyle.textColor)
const svg = container.append('div')
.style('display','flex')
.style('flex-direction', 'column')
.append('svg')
.attr('width', `${chart_layout_specific.stackedBars.width}`)
.attr('height', `${chart_layout_specific.stackedBars.height}px`)
const chart_g = svg
.append('g')
.attr('transform',`translate(${chart_layout_specific.stackedBars.margin.left},${chart_layout_specific.stackedBars.margin.top})`)
chart_g.append('g')
.attr('class', 'x-axis')
.attr('transform',`translate(0,${chart_layout_specific.stackedBars.innerHeight})`)
.call(xAxis_stacks)
.call(g=>{
if(grouped_bars_attrs.groupOrder=='name - key'){
g.selectAll('text')
.attr('text-anchor', 'start')
.attr('transform', `translate(10,0) rotate(${50})`)
}
})
.call(g=>{
g.selectAll('.domain, .tick line')
.attr('stroke', dashboardStyle.axisLine)
g.selectAll('text')
.attr('fill', dashboardStyle.axisText)
})
chart_g.append('g')
.attr('class', 'y-axis')
.call(yAxis_stacks)
.call(g=>{
g.selectAll('.tick line').clone()
.attr("x2", chart_layout_specific.stackedBars.innerWidth)
.attr("stroke-opacity", 0.1)
})
.call(g=>{
g.selectAll('.domain, .tick line')
.attr('stroke', dashboardStyle.axisLine)
g.selectAll('text')
.attr('fill', dashboardStyle.axisText)
})
const stackBars = chart_g.append('g')
.selectAll('g')
.data(stacked_data)
.join('g')
.attr('class', 'stack-layer-g')
.attr('fill', d=>{
return colorScale_stacks(d['key'])
})
.selectAll('rect')
.data(d=>d.slice(0, chartFirstN.barChart_outer))
.join('rect')
.attr('x', d=>{
return xScale_stacks(d['data'][0])
})
.attr('y', ([y1, y2]) => {
return Math.min(yScale_stacks(y1), yScale_stacks(y2))
})
.attr('width', d=>{
return xScale_stacks.bandwidth()
})
.attr('height', ([y1, y2]) => Math.abs(yScale_stacks(y1) - yScale_stacks(y2)))
}