Answers:
有一个很棒的库叫MPLD3,它可以生成交互式D3图。
此代码生成与Jupyter Notebook兼容的流行虹膜数据集的HTML交互式图。选择画笔时,它允许您在所有绘图中选择要突出显示的数据子集。选择十字箭头后,它允许您将鼠标悬停在数据点上并查看有关原始数据的信息。在进行探索性数据分析时,此功能非常有用。
导入matplotlib.pyplot作为plt 将numpy导入为np 将熊猫作为pd导入 进口seaborn为某人 导入mpld3 从mpld3导入插件 %matplotlib内联 虹膜= sb.load_dataset('iris') 从sklearn.preprocessing导入StandardScaler X = pd.get_dummies(iris) X_scal = StandardScaler()。fit_transform(X) 昏暗= 3 从sklearn.decomposition导入PCA pca = PCA(n_components =昏暗) Y_sklearn = pca.fit_transform(X_scal) #定义一些CSS来控制我们的自定义标签 css =“”“ 表 { 边界崩溃:崩溃; } 日 { 颜色:#ffffff; 背景颜色:#000000; } d { 背景颜色:#cccccc; } 桌子,TH,TD { 字体家族:Arial,Helvetica,sans-serif; 边框:1px纯黑色; 文字对齐:右; } “” 无花果,ax = plt.subplots(dim,dim,figsize =(6,6)) fig.subplots_adjust(hspace = .4,wspace = .4) 工具提示= [无] *暗淡 N = 200 索引= np.random.choice(范围(Y_sklearn.shape [0]),大小= N) 对于m(范围)(dim): 对于范围(m + 1)中的n: ax [m,n] .grid(真,alpha = 0.3) scatter = ax [m,n] .scatter(Y_sklearn [index,m],Y_sklearn [index,n],alpha = .05) 标签= [] 对于索引中的我: 标签= X.ix [[i],:]。T.astype(int) label.columns = ['Row {0}'。format(X.index [i])] labels.append(str(label.to_html())) ax [m,n] .set_xlabel('Component'+ str(m)) ax [m,n] .set_ylabel('Component'+ str(n)) #ax [m,n] .set_title('HTML tooltip',size = 20) 工具提示[m] = plugins.PointHTMLTooltip(散布,标签, voffset = 20,hoffset = 20,css = css) plugins.connect(图,工具提示[m]) plugins.connect(图,plugins.LinkedBrush(散布)) 测试= mpld3.fig_to_html(fig = fig) 使用open(“ Output.html”,“ w”)作为text_file: text_file.write(测试)
更新[2016年7月9日]:我刚刚发现Plot.ly具有脱机模式,并且现在是开源的。它有很多预先包装的铃铛,但是在某些情况下,MPLD3可能仍然适用。
我希望这不是评论,而是评论,因为我的意图不是插入/做广告,但是我目前正在研究自己的论文,这可能对您很感兴趣,因为它确实可以满足您的需求。实际上,它是一个聚类可视化工具,但是如果您使用k-means且k = 1,则会有一个交互式绘图,您可以在其中搜索项,选择区域并查看每个节点的内容以及其他内容。看看它是否适合您!
一个非常好的选择,可想而知是...
就我而言,我试图根据技能绘制相似的名称,其中技能是300个维度的word2vec嵌入;将其带到3维矢量空间,并使用plotly Scatter3D,我能够为其绘制3D散点图。
中提琴!有一个很棒的3D图形,具有悬停和放大功能。最好的部分是它可以导出为html文件,使其即插即用,适用于任何其他PC,只需在浏览器中拖放即可(包括在下面的代码中)。
BEE可以简化吗
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 /…)或bokeh
(bokeh.pydata.org/en/latest)。