問題1:有分組的條形圖。如果小組中的任何酒吧都被淹沒,我希望小組強調一下。
當前在鼠標懸停上將所有帶有「bar」的rects設置爲opacity 0.5,然後將特定rect設置爲opacity 1。但是,如何將節點或bar組設置爲opacity 1,以便將它們突出顯示?
.on("mouseover", function(d, i, node) { //this is repeated should be in a function
d3.selectAll(".bar").transition()
.style("opacity", 0.3); //all groups given opacity 0
d3.select(this).transition()
.style("opacity", 1); //give opacity 1 to group on which it hovers.
return tooltip
.style("visibility", "visible")
.html("<span style=font-size:30px;> " + "name:" + d.name +
"</span>"
)
})
.on("mouseout", function(d) {
d3.selectAll(".bar").transition()
.style("opacity", 1);
return tooltip.style("visibility", "hidden");
})
問題2:我也想讓酒吧的X軸標籤行爲相似。讓所有,但當前欄的名稱將具有不透明0.5
我曾嘗試加入吧於x軸文本的CLAS,但不工作,
.call(xAxis)
.selectAll("text")
.style("text-anchor", "end")
.style("font", "20px times")
.attr("dx", "-.8em")
.attr("dy", ".15em")
.attr("class", "bar")
.attr("transform", "rotate(-65)");
我該試着從實現的想法這篇文章
D3 Grouped Bar Chart - Selecting entire group?
,但我一直沒能得到它的工作。
我嘗試給組中的每個欄添加一個d.name +索引的類。但我不能選擇那個回報「。」 + d.name沒有按我期望的那樣工作。
.attr("class", function(d, i) {
return d.name.replace(/\s/g, '') + i + " bar"
})
.on("mouseover", function(d, i, node) {
d3.selectAll(".bar").transition()
.style("opacity", 0.3);
d3.selectAll("." + d.name.replace(/\s/g) + i)
.transition()
.style("opacity", 1);
return tooltip
.style("visibility", "visible")
.html("<span style=font-size:30px;> " + "name:" + d.name +
"</span>");
})
的選擇應該是,
d3.selectAll("." + d.name.replace(/\s/g, '') + i)
其實每個組中的每個酒吧可能只是得到一個「羣體+指數」。不需要正則表達式。
除了xAxis上的文本突出顯示現在工作正常。
任何幫助將不勝感激,
感謝
是的,我當時就在想,如果是感謝。但是,當然兩個同名的人不太可能,名字實際上是作爲第一名和第二名出現的,所以兩個班級和更多的變化人與第二名相沖突。 –
也許是將第一個和第二個名稱的組合與id連接在一起。所以約翰墨菲可能會成爲指數16的johnmurphy16。我認爲這對每個酒吧都是獨一無二的。 –
我可以添加一個類的名稱,刪除空格和索引連接像這樣.attr(「class」,function(d,i){return \\.name.replace(/ \ s/g,'')+ i +「bar」 }) –