我有一个包含 3 个类别(弧)的甜甜圈图:Facebook(50%)、Twitter(30%)和 Instagram(20%)。绘制图表相当容易,但我想知道如何在每个弧中插入一个带有社交网络相应符号的图标(使用 D3 甚至 C3)。
谢谢!
我有一个包含 3 个类别(弧)的甜甜圈图:Facebook(50%)、Twitter(30%)和 Instagram(20%)。绘制图表相当容易,但我想知道如何在每个弧中插入一个带有社交网络相应符号的图标(使用 D3 甚至 C3)。
谢谢!
添加图像只是使用的一种情况
...
.append("svg:image")
.attr("xlink:href","myimage.png")
.attr("width", "32")
.attr("height", "32");
您还需要定位 (x
和y
)。这些将默认为 0,因此您也可以使用 atranslate
来查找弧的中心,如下所示:
.attr("transform", function(d){
return "translate(" + arc.centroid(d) + ")";
});
但是,这只是将图像的右上角锚定到弧的中心,因此要正确居中,您需要使用图像的大小。这是完整的事情:
var image_width = 32;
var image_height = 32;
// add the image
arcs.append("svg:image").attr("transform", function(d){
// Reposition so that the centre of the image (not the top left corner)
// is in the centre of the arc
var x = arc.centroid(d)[0] - image_width/2;
var y = arc.centroid(d)[1] - image_height/2;
return "translate(" + x + "," + y + ")";
})
.attr("xlink:href",function(d) { return d.data.icon;})
.attr("width", image_width)
.attr("height", image_height);
这是一个例子:http: //jsfiddle.net/henbox/88t18rqg/6/
请注意,我已在图表数据中包含图像路径。你只需要去寻找合适的图标!