私はD3を学ぶしようとしています。この例で探しています:D3散布
http://bl.ocks.org/weiglemc/6185069
私は今、何をしたいかは、ドットの形状を変更するので、私はしたいですデータセットとしてのすべての円の代わりに、データセット内のシリアルのブランドに基づいて、円、四角、三角形を作成します。これは単純な変更でなければならないようですが、私が変更を加えたときに表示される形状を得ることはできません。
私は、この変更は、コードのこのセグメントで行われる必要があることを知っている:
svg.selectAll(".dot")
.data(data)
.enter().append("circle")
.attr("class", "dot")
.attr("r", 3.5)
.attr("cx", xMap)
.attr("cy", yMap)
.style("fill", function(d) { return color(cValue(d));})
.on("mouseover", function(d) {
tooltip.transition()
.duration(200)
.style("opacity", .9);
tooltip.html(d["Cereal Name"] + "<br/> (" + xValue(d)
+ ", " + yValue(d) + ")")
.style("left", (d3.event.pageX + 5) + "px")
.style("top", (d3.event.pageY - 28) + "px");
})
.on("mouseout", function(d) {
tooltip.transition()
.duration(500)
.style("opacity", 0);
});
私はサークルの追記や属性を変更する必要があります。私は条件付きで使用したいです。
.attr("d", function(d,i) {if (d["Cereal Name"] == "Nabisco" return d3.svg.symbol().type("circle");
else if (d["Cereal Name"] == "Post" return d3.svg.symbol().type("triangle-down");
else return d3.svg.symbol().type("circle")
しかし、これは私のためには機能しません。誰にどのようにこれを行うには洞察力を持っていますか?私はすべてのサークルを持つことを望んでいない、私は例では、シリアルのブランド名に応じて異なる形をしたい。ありがとうございました。
編集:私はこれを見てみました:
Filter data in d3 to draw either circle or square
しかし、私は、これは
私はまだどのように svg.selectAll( "ドット。")のように混乱しています .DATA(データ) .enter() .append( "円") .ATTR( "クラス"、 "ドット") .ATTR( "R"、3.5) .ATTR( "CX"、XMAP ) .attr( "cy"、yMap) は変更できます。これは私があなたがしたことを反映するために変更したい主要部分です。後であなたがしたことを置くことはできますか? –
d3.symbolを使用するには、円ではなくパスを追加する必要があります。また、パスはx、y、cx、cyを使用して配置されません。あなたのリンクでそのコードを取り、作業中のPlunker/fiddle/whateverを作成してください。私はあなたのためにそれを変更します。 –
ありがとうございましたGerardo:https://plnkr.co/edit/BGJvgGIsPNCWX0d2iXYN?p=preview –