python画拓扑图权值是线条粗细_bokeh中的Networkx绘图:如何根据图边权重设置边宽度...

对于给定的networkx图G,我想调整边界线宽度作为Bokeh中图权重的函数。简化示例:import networkx as nx

import pandas as pd

from bokeh.models import Plot, ColumnDataSource, Range1d, from_networkx, Circle,MultiLine

from bokeh.io import show, output_file

from bokeh.palettes import Viridis

#define graph

source = ['A', 'A', 'A','a','B','B','B','b']

target = ['a', 'B','b','b','a','b','A','a']

weight = [.1,.2,.3,.4,.4,.3, .2, .1]

df = pd.DataFrame([source,target,weight])

df = df.transpose()

df.columns = ['source','target','weight']

G=nx.from_pandas_dataframe(df, 'source', 'target', ['weight'])

#set node attributes

node_color = {'A':Viridis[10][

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用PythonNetworkX库来实现根据图的权重拓扑图的功能。下面是一个简单的示例代码: ```python import networkx as nx import matplotlib.pyplot as plt # 创建图 G = nx.Graph() # 添加节点 G.add_nodes_from(['A', 'B', 'C', 'D']) # 添加边和权重 G.add_edge('A', 'B', weight=2) G.add_edge('A', 'C', weight=3) G.add_edge('B', 'C', weight=1) G.add_edge('B', 'D', weight=4) G.add_edge('C', 'D', weight=5) # 获取边的权重 edge_weights = nx.get_edge_attributes(G, 'weight') # 设置边的粗细 edge_widths = [0.1 * G[u][v]['weight'] for u, v in G.edges()] # 绘制图形 pos = nx.circular_layout(G) nx.draw_networkx_nodes(G, pos, node_color='lightblue', node_size=500) nx.draw_networkx_edges(G, pos, width=edge_widths, edge_color='gray') nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_weights, font_color='red') nx.draw_networkx_labels(G, pos, font_size=16, font_family='sans-serif') # 显示图形 plt.axis('off') plt.show() ``` 在上面的代码,我们首先创建了一个包含4个节点的图,并添加了5条带权重的边。然后,我们使用`nx.get_edge_attributes`函数获取每条边的权重,并将其存储在`edge_weights`字典。接着,我们计算每条边的粗细,将其存储在`edge_widths`列表。最后,我们使用`nx.draw_networkx_nodes`和`nx.draw_networkx_edges`函数绘制图形,并使用`nx.draw_networkx_edge_labels`和`nx.draw_networkx_labels`函数添加标签。 运行上面的代码,你会得到一个带权重拓扑图,其边的粗细代表了它们的权重大小。你可以根据需要修改节点的颜色、边的颜色和样式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值