[形状点击事件][活动形状索引]如何使用事件检索用户点击的绘制形状的索引?

问题描述 投票:0回答:0

我需要使用热图上的“drawrect”按钮绘制矩形,并在单击时获取活动形状的索引。

目前plotly_click事件不会在点击形状轮廓时触发,plotly_relayout事件只会在形状被拖动、调整大小或擦除时触发。

这里有一个简单的例子 codepenExample 或这里:

HTML:

<head>
  <!-- Plotly.js -->
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>

<body>
<div id="graph"></div>
</body>

JS:

var shapes = [
  {
    editable: true,
    label: { text: "" },
    xref: "x",
    yref: "y",
    layer: "above",
    opacity: 1,
    line: { color: "white", width: 5, dash: "solid" },
    fillcolor: "rgba(0, 0, 0, 0)",
    fillrule: "evenodd",
    type: "rect",
    x0: 0.5,
    y0: 0,
    x1: 0.75,
    y1: 1.5
  }
];

var fig = {
  data: [
    {
      z: [
        [1, 20, 30],
        [20, 1, 60],
        [30, 60, 1]
      ],
      type: "heatmap"
    }
  ],
  layout: {
    title: "Heatmap with drawn rectangles",
    shapes: shapes,
    dragmode: "drawrect",
    clickmode: "event+select"
  },
  config: {
    displayModeBar: true,
    modeBarButtons: [[], ["zoom2d", "drawrect", "eraseshape", "autoScale2d"]]
  }
};

var gd = document.getElementById("graph");

Plotly.plot(gd, fig);

gd.on("plotly_click", function (d) {
  alert("plotly click");
  console.log(d);
});

gd.on("plotly_relayouting", function (d) {
  alert("plotly relayouting");
  console.log(d);
});

// gd.on("plotly_relayout", function(d) {
//   alert("plotly relayout")
//   console.log(d)
// })

// gd.on("plotly_selected", function(d) {
//   alert("plotly selected")
//   console.log(d);
// });

// gd.on("plotly_selecting", function(d) {
//   alert("plotly selecting")
//   console.log(d);
// });

我查看了 plotly.js 源代码 (draw.js) 的 draw.js 文件,发现单击形状以更改其样式并使其可拖动、可调整大小或可擦除(第 189 行):

path.node().addEventListener('click', function() { return activateShape(gd, path); });

因此,我相信应该有一种方法可以为这个“点击”事件添加动作并获取它的索引。

我还读到了一些与 dragmode 和 clickmode 属性值的依赖关系,但我无法继续使用它们。

非常感谢您的帮助! 丫丫

plotly plotly.js
© www.soinside.com 2019 - 2024. All rights reserved.