使用d3js在python中创建交互式网络

d3graph的Python项目详细描述


交互式力引导网络生成器(d3graph)

PythonPyPI VersionLicenseCoffeeDownloadsDownloads

Star it if you like it!

d3graph是一个python包,它简化了使用pythond3javascript中创建interactive独立网络的任务。 对于这个软件包,我的灵感来自于互联网上展示的各种各样的例子。但是所有这些例子都是纯粹基于javascript的,没有任何简单的python包来生成网络。因此,我决定创建一个基于python中的输入邻接矩阵自动创建d3jsjavascript和html代码的包!万岁!在

这个包提供了创建一个基于d3javascript的交互式独立网络的功能。D3graph只需要pandas数据帧形式的邻接矩阵。每个列和索引名称表示一个节点,而矩阵中的值>0表示一条边。节点链接是从行到列构建的。从行到列构建边只在定向情况下重要。网络节点和边缘可以根据用户定义的参数在权重、颜色等方面进行调整。在

目录

安装

d3graph与python3.6+兼容,可以在Linux、macosx和Windows上运行。Note:d3graph要求networkx为v2或更高版本。 它是在Apache2.0许可下发布的。安装d3graph有两种方法:

  • 从PyPI安装d3graph(推荐):
^{pr2}$
  • 从GitHub源安装d3graph:
git clone https://github.com/erdogant/d3graph.git
cd d3graph
pip install "networkx>=2"
python setup.py install

快速入门

为了创建交互式和独立的d3graph,可以使用以下工作流:

  • 导入d3graph方法
fromd3graphimportd3graph
  • 创建简单的示例数据集,其输入矩阵应如下所示:
+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+||0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|+====+=====+=====+=====+=====+=====+=====+=====+=====+=====+=====+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+======+|0|0|1|1|1|1|1|1|1|1|0|1|1|1|1|0|0|0|1|0|1|0|1|0|0|0|0|0|0|0|0|0|1|0|0|+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+|1|1|0|1|1|0|0|0|1|0|0|0|0|0|1|0|0|0|1|0|1|0|1|0|0|0|0|0|0|0|0|1|0|0|0|+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+...+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+|32|1|1|1|0|5|0|0|1|0|0|0|0|1|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+|33|1|0|0|0|0|6|1|0|0|0|1|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+
G=nx.karate_club_graph()adjmat=nx.adjacency_matrix(G).todense()adjmat=pd.DataFrame(index=range(0,adjmat.shape[0]),data=adjmat,columns=range(0,adjmat.shape[0]))adjmat.iloc[3,4]=5adjmat.iloc[4,5]=6
  • 制作d3graph
G_d3=d3graph(adjmat)

输出如下:

source=['node A','node F','node B','node B','node B','node A','node C','node Z']target=['node F','node B','node J','node F','node F','node M','node M','node A']weight=[5.56,0.5,0.64,0.23,0.9,3.28,0.5,0.45]# Import libraryfromd3graphimportd3graph,vec2adjmat# Convert to adjacency matrixadjmat=vec2adjmat(source,target,weight=weight)print(adjmat)# target  node A  node B  node F  node J  node M  node C  node Z# source                                                        # node A    0.00     0.0    5.56    0.00    3.28     0.0     0.0# node B    0.00     0.0    1.13    0.64    0.00     0.0     0.0# node F    0.00     0.5    0.00    0.00    0.00     0.0     0.0# node J    0.00     0.0    0.00    0.00    0.00     0.0     0.0# node M    0.00     0.0    0.00    0.00    0.00     0.0     0.0# node C    0.00     0.0    0.00    0.00    0.50     0.0     0.0# node Z    0.45     0.0    0.00    0.00    0.00     0.0     0.0# Example A: simple interactive networkout=d3graph(adjmat)# Example B: Color nodesout=d3graph(adjmat,node_color=adjmat.columns.values)# Example C: include node sizenode_size=[10,20,10,10,15,10,5]out=d3graph(adjmat,node_color=adjmat.columns.values,node_size=node_size)# Example D: include node-edge-sizeout=d3graph(adjmat,node_color=adjmat.columns.values,node_size=node_size,node_size_edge=node_size[::-1],cmap='Set2')# Example E: include node-edge colorout=d3graph(adjmat,node_color=adjmat.columns.values,node_size=node_size,node_size_edge=node_size[::-1],node_color_edge='#00FFFF')# Example F: Change colormapout=d3graph(adjmat,node_color=adjmat.columns.values,node_size=node_size,node_size_edge=node_size[::-1],node_color_edge='#00FFFF',cmap='Set2')# Example H: Include directed links. Arrows are set from source -> targetout=d3graph(adjmat,node_color=adjmat.columns.values,node_size=node_size,node_size_edge=node_size[::-1],node_color_edge='#00FFFF',cmap='Set2',directed=True)

贡献

引文

如果这对你的研究有用,请在你的出版物中引用d3graph。以下是BibTeX条目示例:

@misc{erdogant2019d3graph,title={d3graph},author={Erdogan Taskesen},year={2019},howpublished={\url{https://github.com/erdogant/d3graph}},}

维护人员

  • Erdogan Taskesen,github:erdogant
  • 欢迎投稿。在
  • 如果你想为这件作品给我买一件Coffee,我非常感激:)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java查询,该查询应返回特定相关实体的实体   java创建了两个可运行的JAR,它们使用相同的库而不需要两次   java swing应用程序如何设置面板中组件的高度(和宽度)   在fat jar中找不到java JasperReport文件错误   kotlin在java中如何称呼这个构造函数?   java为什么被零除是一个不可恢复的问题?   java为SUTime添加用于解析季度的自定义规则   java merge 2带所有元素的排序列表   从字符串StringUtils Java中提取数字   java ForLoops最大和最小数   java我可以为嵌入式tomcat 8定义始终保持活动状态的最小executer线程数吗?   java当metod返回ResponseEntry<Resource>抛出错误时,如何返回ModelandView?   java片段翻译和电话定位错误   javagwt:如何让regex(模式和匹配器)在客户端工作   java EAR文件和“WebSphere增强的EAR”之间有什么区别?