图技术
利用neo4j、networkx、dgl、python做图分析挖掘
【1】最短路径算法dijkstra
【2】基于networkx的隐性集团关系识别模型
【3】基于Neo4j的担保社群型态分析挖掘
【4】基于python求有向无环图中target到其他节点全路径
【5】有向图中任意两点的路径
【6】图基础入门
【7】知识图谱快速入门
【8】基于graphsage的欺诈用户风险识别
【9】Graph2NLP浅谈
利用networkx做固定坐标的样例图
- 图技术
- 前言
- 一、构图代码
- 二、结果图示
前言
作者的工作主要聚焦于图数据的研究和分析,研究过程中,需要绘制一些样例图,手工做出来的不够美观,因此利用networkx做出样例图,可以让例子更加美观直白,所以写下这篇文章用于备用。
一、构图代码
主要分为几部分:
- 构造节点,例子中构造了阿拉伯数字的7个节点,从0开始;
- 构造关系,例子中egdes中的每个元素edge表示一条关系,分别表示了关系走向和权重;
- 构造节点的位置,用于展示时固定位置;
- 画节点、画节点属性、画关系。
利用networkx进行构图,代码如下。
import networkx as nx
import matplotlib.pyplot as plt
def main():
G = nx.DiGraph()
# 添加对应的边和点
for i in range(0, 8):
# 结点名称不能为str,desc为标签即结点名称
G.add_node(i, desc='N'+str(i))
# 添加边,参数name为边权值
edges = [[0, 1, 1], [1, 2, 1], [2, 3, 1], [3, 4, 1], [4, 5, 1], [5, 6, 1], [6, 7, 1], [7, 0, 1]]
for edge in edges:
G.add_edge(edge[0], edge[1], name=edge[2])
pos = [(0, 0), (4, 0), (4, 5), (3, 8), (3, 5), (1, 5), (1, 8), (0, 5)]
# 按pos所定位置画出节点,无标签无权值
nx.draw_networkx(G, pos, with_labels=None, node_color="tab:blue", edge_color="tab:green", node_size = 800)
# 画出标签
node_labels = nx.get_node_attributes(G, 'desc')
nx.draw_networkx_labels(G, pos, labels=node_labels)
# 画出边权值
edge_labels = nx.get_edge_attributes(G, 'name')
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels)
plt.title('fixed graph', fontsize=10)
plt.show()
if __name__ == '__main__':
main()
二、结果图示
- 通过node_size参数可以调整节点的大小;
- 通过node_color和edge_color可以分别调整节点和关系的颜色。