The matplotlib perpustakaan sangat mampu tetapi tidak memiliki interactiveness, terutama dalam Jupyter Notebook. Saya ingin baik secara offline merencanakan alat seperti plot.ly .
The matplotlib perpustakaan sangat mampu tetapi tidak memiliki interactiveness, terutama dalam Jupyter Notebook. Saya ingin baik secara offline merencanakan alat seperti plot.ly .
Jawaban:
Ada perpustakaan mengagumkan bernama MPLD3 yang menghasilkan plot D3 interaktif.
Kode ini menghasilkan plot interaktif HTML dari set data iris populer yang kompatibel dengan Jupyter Notebook. Ketika kuas dipilih, itu memungkinkan Anda untuk memilih subset data yang akan disorot di antara semua plot. Ketika panah-silang dipilih, ini memungkinkan Anda untuk mengarahkan mouse ke titik data dan melihat informasi tentang data asli. Fungsi ini sangat berguna ketika melakukan analisis data eksplorasi.
impor matplotlib.pyplot sebagai plt impor numpy sebagai np impor panda sebagai pd impor seaborn sebagai sb impor mpld3 dari plugin impor mpld3 % matplotlib sebaris iris = sb.load_dataset ('iris') dari sklearn.preprocessing mengimpor StandardScaler X = pd.get_dummies (iris) X_scal = StandardScaler (). Fit_transform (X) redup = 3 dari impor PCA sklearn.decomposition pca = PCA (n_components = redup) Y_sklearn = pca.fit_transform (X_scal) # Tetapkan beberapa CSS untuk mengontrol label khusus kami css = "" " meja { border-collapse: runtuh; } th { warna: #ffffff; warna latar: # 000000; } td { warna latar: #cccccc; } meja, th, td { font-family: Arial, Helvetica, sans-serif; perbatasan: 1px hitam pekat; perataan teks: kanan; } "" " fig, ax = plt.subplots (redup, redup, figsize = (6,6)) fig.subplots_adjust (hspace = .4, wspace = .4) tooltip = [Tidak ada] * redup N = 200 index = np.random.choice (rentang (Y_sklearn.shape [0]), size = N) untuk m dalam kisaran (redup): untuk n dalam kisaran (m + 1): kapak [m, n] .grid (Benar, alfa = 0,3) scatter = kapak [m, n]. hamburan (Y_sklearn [indeks, m], Y_sklearn [indeks, n], alpha = .05) label = [] untuk saya dalam indeks: label = X.ix [[i],:]. T.astype (int) label.columns = ['Baris {0}'. format (X.index [i])] labels.append (str (label.to_html ())) kapak [m, n] .set_xlabel ('Komponen' + str (m)) kapak [m, n] .set_ylabel ('Komponen' + str (n)) #ax [m, n] .set_title ('HTML tooltips', size = 20) tooltip [m] = plugins.PointHTMLTooltip (pencar, label, voffset = 20, hoffset = 20, css = css) plugins.connect (ara, tooltip [m]) plugins.connect (ara, plugins.LinkedBrush (pencar) test = mpld3.fig_to_html (fig = fig) dengan open ("Output.html", "w") sebagai text_file: text_file.write (test)
Pembaruan [9 Juli 2016]: Saya baru tahu bahwa Plot.ly memiliki mode offline dan sekarang open source. Ini memiliki banyak bel dan peluit dipaket, tetapi MPLD3 mungkin masih sesuai dalam beberapa kasus.
Saya lebih suka ini menjadi komentar daripada jawaban, karena maksud saya bukan untuk plug / beriklan, tetapi saya sedang mengerjakan tesis saya yang mungkin menarik bagi Anda karena jenis melakukan apa yang Anda inginkan. Pada kenyataannya itu adalah alat visualisasi pengelompokan, tetapi jika Anda menggunakan k-means dengan k = 1 Anda memiliki plot interaktif di mana Anda dapat mencari istilah, pilih area dan lihat konten setiap node, dan hal-hal lainnya. Lihatlah dan lihat apakah itu cocok untuk Anda!
Pilihan yang sangat bagus, ...
Dalam kasus saya, saya mencoba untuk merencanakan penunjukan yang serupa berdasarkan keterampilan, di mana keterampilan adalah embed word2vec 300 dimensi; membawanya ke ruang vektor 3 dimensi, dan menggunakan Scatter3D plotly, saya bisa memplot sebar 3D untuk hal yang sama.
Et Viola !! Punya grafik 3 dimensi yang mengagumkan, dengan fungsi melayang dan memperbesar. Dan bagian terbaiknya adalah dapat diekspor sebagai file html, menjadikannya plug and play yang cocok untuk PC lain, cukup seret dan jatuhkan di browser (termasuk dalam kode di bawah).
Adakah yang bisa BEE lagi sederhana
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
(contoh di github.com/ipython/ipywidgets/blob/master/docs/source/examples / ... ) ataubokeh
( bokeh.pydata.org/en/latest ).