我有一个包含音乐相关数据(元数据)的 CSV 文件。数据结构如下所示:流派、艺术家、曲目
Genre是第一类,Artist是第二类,意思是一个流派有很多艺术家,所以一个艺术家可能有很多歌曲。
这是我的代码:
var dataset = d3.csv("musictrackstiny.csv", function(musicdata){
var genre=d3.nest()
.key(function(d) {return d.genre;})
.sortKeys(d3.ascending)
.entries(musicdata);
var g=svg.selectAll("g").data(musicdata).enter()
.append("g")
.attr("transform",function(d,i) {return "translate("+(120*i)+",0)";});
g.append("rect")
.attr("x",cmargin)
.attr("y",cmargin)
.attr("width",cwidth-2*cmargin)
.attr("height",cheight-2*cmargin)
.append("title")
.text(function(d) {return d.genre;})
g.append("text")
.attr("y",cheight+10)
.attr("x",cmargin)
.text(function(d) {return d.genre;})
genre
问题是即使我正在使用该keys
功能,我也会在显示中看到许多重复条目。
我的最终目标是拥有一个以流派作为第一个节点然后Artists
作为其子节点的树/图。当前使用矩形的显示是为了测试该概念是否有效。请注意,将有许多与歌曲相关的流派和艺术家。我希望有这样的树结构: