Die matplotlib- Bibliothek ist sehr leistungsfähig, weist jedoch keine Interaktivität auf, insbesondere in Jupyter Notebook. Ich würde ein gutes wie Offline - Tool wie Plotten plot.ly .
Die matplotlib- Bibliothek ist sehr leistungsfähig, weist jedoch keine Interaktivität auf, insbesondere in Jupyter Notebook. Ich würde ein gutes wie Offline - Tool wie Plotten plot.ly .
Antworten:
Es gibt eine großartige Bibliothek namens MPLD3 , die interaktive D3-Diagramme generiert.
Dieser Code erstellt ein interaktives HTML-Diagramm des beliebten Iris-Datasets, das mit Jupyter Notebook kompatibel ist. Wenn der Pinsel ausgewählt ist, können Sie eine Teilmenge der Daten auswählen, die unter allen Plots hervorgehoben werden sollen. Wenn der Kreuzpfeil ausgewählt ist, können Sie mit der Maus über den Datenpunkt fahren und Informationen zu den Originaldaten anzeigen. Diese Funktionalität ist sehr nützlich, wenn Sie explorative Datenanalysen durchführen.
importiere matplotlib.pyplot als plt importiere numpy als np Pandas als pd importieren Import Seaborn als jdn mpld3 importieren von mpld3 Import Plugins % matplotlib inline iris = sb.load_dataset ('iris') aus sklearn.preprocessing Import StandardScaler X = pd.get_dummies (Iris) X_scal = StandardScaler (). Fit_transform (X) dim = 3 aus sklearn.decomposition PCA importieren pca = PCA (n_components = dim) Y_sklearn = pca.fit_transform (X_scal) # Definieren Sie CSS, um unsere benutzerdefinierten Beschriftungen zu steuern css = "" " Tabelle { Grenzkollaps: Kollaps; }} th { Farbe: #ffffff; Hintergrundfarbe: # 000000; }} td { Hintergrundfarbe: #cccccc; }} Tabelle, th, td { Schriftfamilie: Arial, Helvetica, serifenlos; Rand: 1px festes Schwarz; Textausrichtung: rechts; }} "" " fig, ax = plt.subplots (dim, dim, figsize = (6,6)) fig.subplots_adjust (hspace = .4, wspace = .4) Tooltip = [Keine] * dim N = 200 index = np.random.choice (Bereich (Y_sklearn.shape [0]), Größe = N) für m im Bereich (dim): für n im Bereich (m + 1): ax [m, n] .grid (True, alpha = 0,3) Scatter = Ax [m, n]. Scatter (Y_sklearn [Index, m], Y_sklearn [Index, n], Alpha = 0,05) label = [] für i im Index: label = X.ix [[i] ,:]. T.astype (int) label.columns = ['Zeile {0}'. Format (X.index [i])] label.append (str (label.to_html ())) ax [m, n] .set_xlabel ('Komponente' + str (m)) ax [m, n] .set_ylabel ('Komponente' + str (n)) #ax [m, n] .set_title ('HTML-Tooltips', Größe = 20) tooltip [m] = plugins.PointHTMLTooltip (Streuung, Beschriftungen, voffset = 20, hoffset = 20, css = css) plugins.connect (Abb. Tooltip [m]) plugins.connect (Abb. plugins.LinkedBrush (Scatter)) test = mpld3.fig_to_html (fig = fig) mit open ("Output.html", "w") als text_file: text_file.write (Test)
Sehen Sie es in Aktion auf meinem Blog .
Update [9. Juli 2016]: Ich habe gerade herausgefunden, dass Plot.ly einen Offline-Modus hat und jetzt Open Source ist. Es hat viele Schnickschnack vorverpackt, aber MPLD3 kann in einigen Fällen immer noch angemessen sein.
Ich würde es vorziehen, wenn dies ein Kommentar anstelle einer Antwort wäre, da ich nicht beabsichtige, Werbung zu schalten, aber ich arbeite derzeit an meiner These, die für Sie von Interesse sein könnte, da sie das tut, was Sie wollen. In Wirklichkeit handelt es sich um ein Clustering-Visualisierungswerkzeug. Wenn Sie jedoch k-means mit k = 1 verwenden, haben Sie ein interaktives Diagramm, in dem Sie nach Begriffen suchen, einen Bereich auswählen und den Inhalt jedes Knotens anzeigen können. Schauen Sie nach, ob es für Sie funktioniert!
Eine sehr gute Wahl, viel ...
In meinem Fall habe ich versucht, eine ähnliche Bezeichnung basierend auf Fähigkeiten zu zeichnen, wobei Fähigkeiten eine word2vec-Einbettung von 300 Dimensionen waren. brachte es in einen dreidimensionalen Vektorraum und mit plotly Scatter3D konnte ich ein 3D-Streudiagramm für dasselbe zeichnen.
Et Viola !! Ich habe ein fantastisches dreidimensionales Diagramm mit Hover- und Vergrößerungsfunktionen. Und das Beste daran ist, dass es als HTML-Datei exportiert werden kann, was es zu einem Plug-and-Play-Gerät macht, das für jeden anderen PC geeignet ist. Ziehen Sie es einfach per Drag & Drop in einen Browser (im folgenden Code enthalten).
Kann etwas einfacher sein
from plotly.offline import plot
from plotly.graph_objs import *
import numpy as np
# x = np.random.randn(2000)
# y = np.random.randn(2000)
# Instead of simply calling plot(...), store your plot as a variable and pass it to displayHTML().
# Make sure to specify output_type='div' as a keyword argument.
# (Note that if you call displayHTML() multiple times in the same cell, only the last will take effect.)
p = plot(
[
Scatter3d(x=skills_df[0], y=skills_df[1], z=skills_df[2], text= skills_df['designation'], mode='markers', marker=Marker(color=skills_df['cluster_number'], size=3, opacity=0.5, colorscale='Viridis'))
],
output_type='div'
# filename='/dbfs/FileStore/tables/lnkdn_jobroles_viridis.html' turn it on to save the file
)
ipywidgets
(Beispiele unter github.com/ipython/ipywidgets/blob/master/docs/source/examples) /… ) Oderbokeh
( bokeh.pydata.org/en/latest ).