히스토그램에 텍스트를 추가하는 데 문제가 있습니다. 좀 더 간단한 예를 들어 이것을 할 수 있습니다.히스토그램의 각 막대에 텍스트 추가
나는이 작업을 수행하려고 :
// try to add bar value
var barnum = g.selectAll('text')
.data(layout)
.enter()
.append("text")
.attr('y',-10)
.attr('x',10)
.attr("text-anchor", "middle")
.style("fill","black")
.text('testtest')
.style("pointer-events", "none")
;
barnum.transition();
이 내 그림에 텍스트를 볼 수 없습니다. 코드 포함 정의는 다음과 같습니다.
var dateFormat = d3.time.format("%Y-%m-%d");
var g;
var data;
var margin = {top: 30, right: 30, bottom: 80, left: 80},
width = 500 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var cx = 10;
var numberBins = 5;
var dispatch = d3.dispatch(chart, "hover");
function chart(container) {
g = container;
update();
}
chart.update = update;
function update() {
// create hist layout
var hist = d3.layout.histogram()
.value(function(d) { return d.selectvar })
.range([d3.min(data, function(d){ return d.selectvar }) , d3.max(data, function(d){ return d.selectvar }) ])
.bins(numberBins);
var layout = hist(data);
var maxLength = d3.max(layout, function(d) { return d.length });
var widthScale = d3.scale.linear()
.domain([0, maxLength])
.range([0, width])
var yScale = d3.scale.ordinal()
.domain(d3.range(numberBins))
.rangeBands([height, 0], 0)
var colorScale = d3.scale.category20();
// create svg
var rects = g.selectAll("rect")
.data(layout)
rects.enter().append("rect")
rects .transition()
.duration(500)
.attr({
y: function(d,i) {
return yScale(i)
},
x: 50,
height: yScale.rangeBand(),
width: function(d,i) {
return widthScale(d.length)
},
fill: function(d, i) { return colorScale(i) }
});
rects.exit().transition().remove();
// try to add bar value
var barnum = g.selectAll('text')
.data(layout)
.enter()
.append("text")
.attr('y',-10)
.attr('x',10)
.attr("text-anchor", "middle")
.style("fill","black")
.text('testtest')
.style("pointer-events", "none")
;
barnum.transition();
svg 요소를 만드는 방법이 잘못되었습니다. 나는 처음부터 성공적인 사례 사용 ('g')을 발견했다. d3.js에 새로운 기능! 고맙습니다.
감사합니다. 사실 이것은 Mike Bostock의 한 예입니다. html의 'svg'와 'g'를 외부 루프에 추가합니다. 내부 업데이트 기능. g는 이미 'g'가 붙은 'svg'요소였습니다. 그러나 당신은 맞습니다. 나는 'svg'또는 'g'의 정확한 의미와 언제 추가해야 하는지를 모릅니다. ( – freeyoung
원래 예제로 링크하면 그가하는 일을 파악할 수 있습니다. – mgold