分布式机器 HashMap 程序设计 log4j 劝酒文化 oracle unicode Normalizecss jmeter性能测试视频 kafka默认端口 oracle添加索引 input取消边框 查看nodejs版本 svn查看历史版本 mysql自然连接 python怎么使用 java基础语言 java的数据类型 java中数据类型 java面向对象 java基础框架 linux系统安装 php案例 rendercontrol 离散数学pdf bz2解压命令 音乐狂app go程序设计语言 js验证码 popen函数 babelrc 苹果手机不弹出信任 deepcopy ajaxpro oemdiy winsxs可以删除吗 js数组操作 机械键盘怎么关闭灯光 思源字体打包 getdata软件
当前位置: 首页 > 学习教程  > python

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

2021/2/6 22:22:25 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

对于给定的networkx图G,我想调整边界线宽度作为Bokeh中图权重的函数。简化示例:import networkx as nximport pandas as pdfrom bokeh.models import Plot, ColumnDataSource, Range1d, from_networkx, Circle,MultiLinefrom bokeh.io import show, outp…

对于给定的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], 'B':Viridis[10][9],'a':Viridis[10][4],'b':Viridis[10][4]}

node_size = {'A':50, 'B':40,'a':10,'b':10}

node_initial_pos = {'A':(-0.5,0), 'B':(0.5,0),'a':(0,0.25),'b':(0,-0.25)}

nx.set_node_attributes(G, 'node_color', node_color)

nx.set_node_attributes(G, 'node_size', node_size)

nx.set_node_attributes(G, 'node_initial_pos', node_initial_pos)

#source with node color, size and initial pos (perhaps )

node_source = ColumnDataSource(pd.DataFrame.from_dict({k:v for k,v in G.nodes(data=True)}, orient='index'))

plot = Plot(plot_width=400, plot_height=400,

x_range=Range1d(-1.1,1.1), y_range=Range1d(-1.1,1.1))

graph_renderer = from_networkx(G, nx.spring_layout, scale=0.5, center=(0,0))

#style

graph_renderer.node_renderer.data_source = node_source

graph_renderer.node_renderer.glyph = Circle(fill_color = 'node_color',size = 'node_size', line_color = None)

graph_renderer.edge_renderer.glyph = MultiLine(line_color="#CCCCCC", line_alpha=0.8, line_width=2)

plot.renderers.append(graph_renderer)

output_file('test.html')

show(plot)

这提供了一个绘图,但我无法将G的权重链接到edge_renderer的line_width属性。与line_width=2不同,我希望line_width是图的权重。我尝试过根据传递给G的df创建一个新的ColumnDataSource,但是没有成功。例如,下面给出“Bokeh Error Cannot read property‘length’of undefined”:

^{pr2}$

有没有其他的配对方法_renderer.edge_渲染器.glyph的线宽与图形权重的关系?在

Bokeh 0.12.14,Networkx 2.1,Python 3.5.4,Jupyter 5.0.0

相关资源:微信小程序源码-合集6.rar

本文链接: http://www.dtmao.cc/news_show_2000030.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?