Matplotlib kütüphanesi özellikle Jupyter Notebook içinde çok yetenekli ama interactiveness yoksun. Plot.ly gibi iyi bir çevrimdışı çizim aracı istiyorum .
Matplotlib kütüphanesi özellikle Jupyter Notebook içinde çok yetenekli ama interactiveness yoksun. Plot.ly gibi iyi bir çevrimdışı çizim aracı istiyorum .
Yanıtlar:
Etkileşimli D3 grafikleri oluşturan MPLD3 adlı harika bir kütüphane var .
Bu kod, Jupyter Notebook ile uyumlu popüler iris veri kümesinin HTML etkileşimli bir grafiğini üretir. Boya fırçası seçildiğinde, tüm grafikler arasında vurgulanacak bir veri alt kümesi seçmenizi sağlar. Çapraz ok seçildiğinde, veri noktasını fareyle üzerine getirmenize ve orijinal verilerle ilgili bilgileri görmenize olanak tanır. Bu işlevsellik, keşifsel veri analizi yaparken çok kullanışlıdır.
matplotlib.pyplot dosyasını plt olarak içe aktar np'yi np olarak içe aktar pandaları pd olarak içe aktar sb olarak ithal deniz ithalat mpld3 mpld3 içe aktarma eklentilerinden % matplotlib satır içi iris = sb.load_dataset ('iris') Gönderen sklearn.preprocessing import StandardScaler X = pd.get_dummies (iris) X_scal = StandardScaler (). Fit_transform (X) dim = 3 sklearn.decomposition ithalat PCA dan pca = PCA (n_component = dim) Y_sklearn = pca.fit_transform (X_scal) # Özel etiketlerimizi kontrol etmek için bazı CSS tanımlayın css = "" " tablo { sınır çöküşü: çöküş; } inci { renk: #ffffff; arka plan rengi: # 000000; } td { arka plan rengi: #cccccc; } tablo, th, td { yazı tipi ailesi: Arial, Helvetica, sans-serif; sınır: 1 piksel düz siyah; metin hizalama: sağ; } """ incir, balta = plt. alt grafikleri (dim, dim, figsize = (6,6)) fig.subplots_adjust (hspace = .4, wspace = .4) ipucu = [Yok] * loş N = 200 index = np.random.choice (aralık (Y_sklearn.shape [0]), boyut = N) m aralığında (dim): n aralığında (m + 1): ax [m, n] .grid (Doğru, alfa = 0,3) dağılım = balta [m, n]. dağılım (Y_sklearn [dizin, m], Y_sklearn [dizin, n], alfa = .05) etiketleri = [] dizindeki i için: label = X.ix [[i],:]. T.astype (int) label.columns = ['Satır {0}'. biçimi (X.index [i])] labels.append (str (label.to_html ())) ax [m, n] .set_xlabel ('Bileşen' + str (m)) ax [m, n] .set_ylabel ('Bileşen' + str (n)) #ax [m, n] .set_title ('HTML araç ipuçları', boyut = 20) tooltip [m] = eklentiler.PointHTMLTooltip (dağılım, etiketler, voffset = 20, hoffset = 20, css = css) plugins.connect (incir, ipucu [m]) plugins.connect (incir, plugins.LinkedBrush (dağılım)) test = mpld3.fig_to_html (şek = incir) text_file olarak open ("Output.html", "w") ile: text_file.write (test)
Güncelleme [9 Temmuz 2016]: Plot.ly'nin çevrimdışı bir modu olduğunu ve şimdi açık kaynak olduğunu öğrendim. Önceden paketlenmiş çok sayıda çan ve ıslık var, ancak bazı durumlarda MPLD3 yine de uygun olabilir.
Niyetim takmak / tanıtmak değil, çünkü şu anda bir cevap yerine bir yorum olmasını tercih ederim, ama şu anda bu tür ne istediğinizi yapar gibi ilginizi çekebilir tezimi üzerinde çalışıyorum. Gerçekte bu bir kümeleme görselleştirme aracıdır, ancak k = 1 ile k-araçlarını kullanırsanız, terimleri arayabileceğiniz, bir alan seçebileceğiniz ve her düğümün içeriğini ve diğer şeyleri görebileceğiniz etkileşimli bir planınız vardır. Bir göz atın ve işinize yarayıp yaramadığını görün!
Çok iyi bir seçim, plotly ...
Benim durumumda, becerilerin 300 boyuta gömülü bir word2vec olduğu becerilere dayalı benzer bir atama yapmaya çalışıyordum; 3 boyutlu bir vektör uzayına getirdi ve Scatter3D'yi plotly kullanarak, bunun için bir 3D dağılım grafiğini çizebildim.
Et Viola !! Fareyle üzerine gelme ve büyütme işlevleriyle harika bir 3 boyutlu grafiğiniz var. Ve en iyi yanı, bir html dosyası olarak dışa aktarılabilmesidir, bu da onu herhangi bir PC için uygun bir tak ve çalıştır, sadece bir tarayıcıda sürükleyip bırakın (aşağıdaki kodda bulunur).
Artık her şey daha kolay olabilir mi?
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
( github.com/ipython/ipywidgets/blob/master/docs/source/examples adresindeki örnekler) /… ) Veyabokeh
( bokeh.pydata.org/en/latest ).