我有一個傳說,用彩色矩形...我如何使用符號隨着聯想
我想用符號(即,圓,交叉更換矩形,鑽石,方形)。我無法弄清楚如何做到這一點。
我一直在使用.attr("d", d3.svg.symbol().type('circle')
的變體。舉例來說,我想:
legendRect
.attr("d", d3.svg.symbol().type(function (d) { return d[2] })
,我嘗試:
legendRect.append("svg:path")
.attr("d", d3.svg.symbol().type((d: any) => { return d[2] }))
d[2]
是「應該是」從legendData
拉動,如在下面的代碼示例...喜歡它d[1]
做爲fill
。
但我從未看到任何改變。
下面是我用圖例的代碼,沒有符號的東西,下面。我做錯了什麼,如何將矩形改爲符號?我需要在哪裏添加什麼?
var legendData = [["OA", "yellow", "circle"], ["OI", "blue", "cross"], ["RARC", "green", "diamond"], ["CAPE", "red", "square"], ["Other", "black", "triangleDown"]];
var legend = this.svg.append("g")
.attr("class", "legend")
.attr("height", 0)
.attr("width", 0)
.attr('transform', 'translate(-20,250)');
var legendRect = legend.selectAll('rect').data(legendData);
legendRect.enter()
.append("rect")
.attr("x", width - 65)
.attr("width", 10)
.attr("height", 10)
;
legendRect
.attr("y", function (d, i) {
return i * 20;
})
.style("fill", function (d) {
return d[1];
})
var legendText = legend.selectAll('text').data(legendData);
legendText.enter()
.append("text")
.attr("x", width - 52);
legendText
.attr("y", function (d, i) {
return i * 20 + 9;
})
.text(function (d) {
return d[0];
});
有人想解釋downvote? – Mark
謝謝@Mark。我原先接受了sparta93的回答,因爲我在你之前看到過;但由於圖例更容易定位,我只是切換到了您的方法。 –