我有一个d3图表,在单击圆圈的图表中,我使圆圈尺寸变大 d3.select(this).attr("r", 9);
我的要求是,我想在背景中的圆圈顶部添加蓝色区域,如下图所示,
我试图在背景上添加一个带有颜色的区域,但是它不起作用。请给我建议。谢谢。
我的点击代码-
.on("click", function(d) {
d3.selectAll(".green-circle").attr("r", 5);
d3.selectAll(".red-circle").attr("r", 5);
d3.select(this).attr("r", 9);
})
我尝试添加行onClick,但它在圆圈中添加了内容,我也尝试获取parentNode,但没有运气。
d3.select(this).append("line")
.attr("id", "focusLineX")
.attr("class", "focusLine");
<circle cx="568.2359387326708" cy="100" r="9" class="green-circle" style="fill: transparent; stroke: black; stroke-width: 0.25;">
<line id="focusLineX" class="focusLine"></line>
</circle>
您需要将新对象添加到图表中,而不是圈子中。根据您已共享的代码(感谢您这样做,它使帮助变得更加容易!),您应该将其添加到g
对象。
我不确定所做的更改是否已反映出来,我想您看不到它们,所以这是到目前为止我所做的更改:
在rect
某个地方声明一个变量,我在newX
变量之后做它:
// A function that updates the chart when the user zoom and thus new boundaries are available
var newX = "";
var rect;
然后在on("click")
函数中,将此代码放在开头:
if (rect) rect.remove();
rect = g
.append("rect")
.attr("x", xScale(d.startTime) - 5)
.attr("y", 0)
.attr("width", 10)
.attr("height", height)
.attr("data", d.startTime) // Need to save original x Position for scroll to work properly
.style("fill", "navy");
我使用navy
填充矩形,但可以随意使用样式,这只是为了让您了解如何做自己想要的。
希望对您有所帮助,如有任何疑问,请与我们联系。
*更新*另外,还需要在updateChart
函数的末尾添加以下行,以使条形图与其余图形滚动:
if (rect) rect.attr("x", newX(rect.attr("data")));
*更新2 *因此,要使缩放+滚动都正常工作,您需要在所有位置使用newX
该功能,因为此功能提供了x
根据缩放和滚动值更新的坐标。
此外,在该updateChart
函数中,您还需要减去列宽的一半,以使列不会跳到右侧。
可以找到她的工作代码:CodeSandbox
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句