我的折线图显示在折线图的右上方。放置它的代码是:
var legend = chart.append("g")
.attr("class", "legend")
.selectAll("g")
.data(chiefs)
.enter().append("g");
legend.append("circle")
.attr("cy", function(d, i) {
return i * 20;
})
.attr("cx", width * 0.9 - 10)
.attr("r", 4)
.attr("fill", function(d) {
return color(d);
});
legend.append("text")
.attr("y", function(d, i) {
return i * 20 + 5;
})
.attr("x", width * 0.9)
.text(function(d) {
return d;
})
除图例外,使用resize()
函数对整个图表做出响应:
function resize() {
var width = parseInt(d3.select(".chart").style("width")) - margin*2,
height = parseInt(d3.select(".chart").style("height")) - margin*2;
xScale.range([0, width]).nice(d3.time.year);
yScale.range([height, 0]).nice();
chart.select('.xaxis').style("display", "initial");
chart.select('.yaxis').style("display", "initial");
chart.select(".last")
.style("display", "none");
chart.select(".first")
.style("display", "none");
chart
.attr("width", width + margin*2)
.attr("height", height + margin*2)
chart.select('.xaxis')
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
chart.select('.yaxis')
.call(yAxis);
chart.selectAll('.line')
.remove();
nested_data.forEach(function(d) {
chart.append("path")
.attr("class", "line")
.attr("d", line(d.values))
.attr("stroke", color(d.key))
});
}
如何将图例添加到resize()
功能,以便它也能响应?
我尝试包含以下代码,但它不正确:
chart.select('.legend')
.call(legend)