2016-03-30 6 views
0

Ich habe das Tooltip-Beispiel in MPLD3 versucht. In meiner Abbildung habe ich jedoch mehrere Unterplots mit der verknüpften X-Achse (die Länge der Daten ist gleich, ich zeichne verschiedene Spalten eines Datenrahmens). Mit dem folgenden Code konnte ich den Tooltip sehen, wenn ich die Maus im letzten Teilplotter bewege. Allerdings würde ich das gerne tun, wenn ich die Maus in irgendeinem Teilplot bewegen würde. Wie kann ich das erreichen? Ich denke, es sollte so etwas wie das LinkedBrush-Beispiel sein. Ich bin mir einfach nicht sicher, wie ich mein Plugin schreiben soll, um verschiedene Unterplots zu verarbeiten.Kann ich Tooltips in verknüpften Subplots in MPLD3 verwenden

Der folgende Code erstellt eine Figur, die im unteren Teilplot den Tooltip enthält.

import matplotlib.pyplot as plt 
import numpy as np 
import mpld3 
from mpld3 import plugins, utils 
N=30 
fig, axes = plt.subplots(3, 1, figsize=(6,10), sharex='col') 
for i in range(3): 
    points1=axes[i].scatter(range(N),np.random.random(size=N), color='b',marker='.') 
labels0 = [ 'point {0}'.format(i + 1) for i in range(N)] 
tooltip = plugins.PointLabelTooltip(points1, labels0) 
plugins.connect(fig, tooltip) 
mpld3.save_html(fig, 'test.html') 
+0

Können Sie einige simulierte Daten für 'sub' fügen Sie diese ein komplettes Beispiel zu machen? http://stackoverflow.com/help/mcve –

+0

Entschuldigung. Fügen Sie einfach ein einfaches Beispiel zur Veranschaulichung der Frage hinzu. – user3569263

+1

Ich vermute, Sie wollen etwas komplizierter als erreicht wird, indem Sie einfach 'labels0 = ...' zu 'plugins.connect' Zeilen in Schleife (wie hier gezeigt: http://nbviewer.jupyter.org/gist/aflaxman/453e557a69eb6b794290075065794630) –

Antwort

1

Sie erreichen dies durch den Tooltip Schaffung Code in Ihre Schleife setzen:

import matplotlib.pyplot as plt 
import numpy as np 
import mpld3 
from mpld3 import plugins, utils 
N=30 
fig, axes = plt.subplots(3, 1, figsize=(6,10), sharex='col') 
for i in range(3): 
    points1=axes[i].scatter(range(N),np.random.random(size=N), color='b',marker='.') 
    labels0 = [ 'point {0}'.format(i + 1) for i in range(N)] 
    tooltip = plugins.PointLabelTooltip(points1, labels0) 
    plugins.connect(fig, tooltip) 
mpld3.save_html(fig, 'test.html')