在 Plotly 热图上选择/固定单个像素
P粉806834059
2023-09-02 14:57:46
<p>在 Plotly 热图上,有时有 2 种选择模式很有用:</p>
<ul>
<li><p>矩形选择(已在 modbar 中提供)</p>
</li>
<li><p><strong>选择/固定单个像素</strong>:我试图通过回收我不需要的现有“drawcircle”按钮来实现这一点。单击时,像素应突出显示,或者其顶部有一个彩色圆盘(或红色“图钉”,如 Google 地图 UI)</p>
</li>
</ul>
<p>问题:当在 modbar 中选择 <code>drawcircle</code> 工具时,<code>plotly_click</code> 事件不会触发(因此我们无法获取坐标),并且 <code>plotly_selected </code> 没有给出初始的鼠标点击位置。 (我不想制作真正的圆形,我只想使用第一次单击)。另请参阅 JavaScript 中的事件处理程序</p>
<p>
<pre class="brush:js;toolbar:false;">const z = Array.from({
length: 50
}, () => Array.from({
length: 50
}, () => Math.floor(Math.random() * 255)));
const plot = document.querySelector("#plot");
const data = [{
type: 'heatmap',
z: z
}];
const layout = {
'yaxis': {
'scaleanchor': 'x'
}
};
const config = {
modeBarButtons: [
["zoom2d"],
["zoomIn2d"],
["zoomOut2d"],
["autoScale2d"],
["select2d"],
["drawcircle"]
],
displaylogo: false,
displayModeBar: true
};
Plotly.newPlot('plot', data, layout, config);
plot.on("plotly_selected", (data) => {
console.log(data);
});
plot.on('plotly_click', (data) => {
console.log(data);
});</pre>
<pre class="brush:html;toolbar:false;"><script src="https://cdn.plot.ly/plotly-2.16.2.min.js"></script>
<div id="plot"></div></pre>
</p>
<p><strong>如何在 Plotly 热图上使用“选择/固定像素/点”模式栏工具?</strong></p>
<p>注意:Python 文档比 JS 版本更完整:添加/删除模式栏按钮</p>
研究了您的示例,我发现您的
console.log
没有提供预期的数据,因为data
是循环的。但是,由于data.points
具有单个元素,因此您可以通过data.points[0].x
、data.points[0] 获取坐标。分别为 y
和data.points[0].z
。