D3 js-我想在背景的圆圈中添加圆的onClick

Javascript编码器

我有一个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>

我的代码沙盒-https://codesandbox.io/s/polished-bush-iqvrx

萨齐努克

您需要将新对象添加到图表中,而不是圈子中。根据您已共享的代码(感谢您这样做,它使帮助变得更加容易!),您应该将其添加到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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章