Einzelne Pixel auf der Plotly-Heatmap auswählen/anheften
P粉806834059
2023-09-02 14:57:46
<p>Bei Plotly-Heatmaps ist es manchmal nützlich, zwei Auswahlmodi zu haben: </p>
<ul>
<li><p>Rechteckige Auswahl (bereits in der Modbar verfügbar)</p>
</li>
<li><p><strong>Einzelne Pixel auswählen/korrigieren</strong>: Ich versuche dies zu erreichen, indem ich eine vorhandene Schaltfläche zum Zeichnen eines Kreises wiederverwende, die ich nicht benötige. Wenn Sie darauf klicken, sollte das Pixel hervorgehoben werden oder eine farbige Scheibe (oder ein roter „Pin“ wie bei der Google Maps-Benutzeroberfläche) darüber angezeigt werden. </p>
</li>
</ul>
<p>Problem: Wenn das Tool <code>drawcircle</code> in der Modbar ausgewählt wird, wird das Ereignis <code>plotly_click</code> nicht ausgelöst (daher können wir die Koordinaten nicht abrufen) und <p> code>plotly_selected </code> Es wird keine anfängliche Mausklickposition angegeben. (Ich möchte keinen echten Kreis erstellen, sondern nur den ersten Klick verwenden). Siehe auch Event-Handler in JavaScript</p>
<p>
<pre class="brush:js;toolbar:false;">const z = Array.from({
Länge: 50
}, () => Array.from({
Länge: 50
}, () => Math.floor(Math.random() * 255)));
const plot = document.querySelector("#plot");
const data = [{
Typ: 'Heatmap',
z: z
}];
const-Layout = {
'yaxis': {
'scaleanchor': 'x'
}
};
const config = {
modeBarButtons: [
["zoom2d"],
["zoomIn2d"],
["zoomOut2d"],
["autoScale2d"],
["select2d"],
["Zeichnungskreis"]
],
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>Wie verwende ich das Modusleistenwerkzeug „Pixel/Punkte auswählen/korrigieren“ auf einer Plotly-Heatmap? </strong></p>
<p>Hinweis: Die Python-Dokumentation ist vollständiger als die JS-Version: Modalleistenschaltflächen hinzufügen/entfernen</p>
研究了您的示例,我发现您的
console.log
没有提供预期的数据,因为data
是循环的。但是,由于data.points
具有单个元素,因此您可以通过data.points[0].x
、data.points[0] 获取坐标。分别为 y
和data.points[0].z
。