簡體   English   中英

拖動后獲取點信息

[英]Get point information after dragging

在IPython筆記本中有令人驚奇的mpld3用於交互式matplotlib圖。 mpld3還具有插件功能。 一個對我來說特別有趣:你可以在情節中選擇一個點並拖動它 - 它在這里顯示:

http://mpld3.github.io/examples/drag_points.html

鏈接中的源代碼生成下面的圖表。 我想從插件中獲取信息,我已經將我的觀點拖到了。 但我真的迷失在javascript部分以及如何從中獲取信息。

在這里,我把一些觀點拖到了新的位置。我想獲取信息我拖到哪里。

我對此感到疑惑並希望做類似的事情。 這是我發現的。 首先,我想知道鼠標坐標是什么。 為了能夠讀取坐標,我在drag_points.py中插入了以下“alert”語句,類似於“print”:

    var startx = 0;
    var starty = 0;
    function dragstarted(d) {
      d3.event.sourceEvent.stopPropagation();
      d3.select(this).classed("dragging", true);
      startx = obj.ax.x(d[0]);
      starty = obj.ax.y(d[1]);
    }
    var endx = 0;
    var endy = 0;
    function dragended(d) {
      d3.select(this).classed("dragging", false);
      endx = obj.ax.x(d[0]);
      endy = obj.ax.y(d[1]);
      alert(endx-startx);
      d3.select("input")
          .attr("value",endx-startx)
    }

在鼠標單擊並釋放后,它會打開一個警告診斷,其中x行距已經過去。 這允許訪問坐標信息。

接下來,我測試了我是否可以動態地將此坐標信息編碼到底層html中,從而允許進一步的后端處理。 我了解到d3.js允許您修改html標簽的內容。 因此我修改了_display.py中的“jinja模板”(與“plugins.py”在同一目錄中找到。具體來說,我在模板中輸入了以下內容:

<table width=300 height=200 border=5>
<tr>
  <form method="POST" action="/plot" class="">
  <input type="submit" name="submit" value="PLOT">
  </form>
</tr>
</table>

並修改了“drag_points.py”,以便它不是打開一個警告框,而是將“輸入”值的值從“post”修改為endx-startx。 那是,

      d3.select("input")
          .attr("value",endx-startx)

最終結果是,當拖動和釋放球時,警告框顯示x位移,該值用於更新“輸入”按鈕的值。 如果使用輸入按鈕之外​​的其他標簽來設置值,則應該可以利用下游信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM