亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的 d3 折線圖中的畫筆功能未按預期工作

我的 d3 折線圖中的畫筆功能未按預期工作

慕的地8271018 2022-05-22 15:53:21
我在 d3 折線圖中實現的畫筆和縮放功能沒有按預期工作,我點擊了這個鏈接 - https://bl.ocks.org/EfratVil/92f894ac0ba265192411e73f633a3e2f,我面臨的問題是 -圖表未顯示所有值,我有 4 個數據,但它僅顯示 3 個數據 onClick of dot 我顯示的矩形沒有隨畫筆功能而移動,但圖表總是開箱即用我的代碼沙箱 - https://codesandbox.io/s/proud-firefly-xy1py有人可以指出我做錯了什么嗎?謝謝。
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

你的第一點是落后于你的clip區域。例如,如果您右鍵單擊第一個可見的圓圈并檢查元素,您將看到所有 4 個圓圈元素都存在于 dom 中。第一個圓形元素位于軸的后面。


這意味著你必須將你的情節向右移動。不幸的是,您編寫圖表的方式沒有g為主圖表附加元素,然后將圓圈和路徑附加到該g元素。因此,這必須在多個地方進行。


首先,我們將您的剪輯路徑調整為:


   svg

      .append("defs")

      .append("SVG:clipPath")

      .attr("id", "clip")

      .append("SVG:rect")

      .attr("width", containerWidth)

      .attr("height", height)

      .attr("x", 40)

      .attr("y", 0);

接下來我們調整你的圈子


    scatter

      .selectAll(".foo")

      .data(data)

      .enter()

      .append("circle")

      .attr("class", "foo")

      .attr("transform", "translate(40,0)")

然后你的線


    scatter

      .append("path")

      .datum(data)

      .attr("class", "line")

      .attr("d", line)

      .attr("transform", "translate(40,0)");

您還必須為40其他元素考慮此 px 轉換。雖然我很難解構你的svg。我認為這應該給你這個想法。檢查軸是否與時間點匹配。


更新


要使矩形隨畫筆移動,您必須在brushedconst 函數中添加代碼,以使用更新的比例重新計算 x、y、寬度和高度。


更新2


在瀏覽完評論中提供的代碼框后,我能夠添加代碼以將矩形更新為brushedconst,如下所示,以使矩形也隨著刷牙移動:


      // update rectangles

      scatter

        .selectAll(".rect-elements")

        .attr("x", d => {

          console.log(d);

          return xScale(d.startTime) - 12.5;

        })

        .attr("y", 0)

        .attr("width", 24)

        .attr("height", height + 5);


查看完整回答
反對 回復 2022-05-22
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號