有没有一种方法可以绘制具有多个不同字形(圆形、矩形...)的网络图(由 python networkx 模块生成)?
到目前为止,我只找到了一种方法,使用“graph.node_renderer.glyph = Something”使所有节点字形相同,只是大小和颜色不同。
谢谢。
为节点提供不同标记的一种方法是使用散点符号。
所以,而不是
graph.node_renderer.glyph = Circle(size=20)
Run Code Online (Sandbox Code Playgroud)
你也可以用它来画圆圈
graph.node_renderer.glyph = Scatter(size=20, marker="circle")
Run Code Online (Sandbox Code Playgroud)
marker如果将部件更改为指向数据源,则可以使用多个不同的标记(见下文):
graph.node_renderer.glyph = Scatter(size=20, marker="marker")
Run Code Online (Sandbox Code Playgroud)
这里的图表的类型是bokeh.models.GraphRenderer。
然后,您需要为“标记”添加数据源:
graph.node_renderer.glyph = Scatter(size=20, marker="marker")
Run Code Online (Sandbox Code Playgroud)
或者,您可能想使用字典一次定义整个数据源
graph.node_renderer.data_source.data = dict(
# The 'index' is required by GraphRenderer. It must be a unique node identifier.
index=node_ids,
size=sizes,
marker=markers
)
Run Code Online (Sandbox Code Playgroud)
bokeh.core.enums.MarkerType中列出了标记的不同选项,它们是:
sterisk, circle, circle_cross, circle_dot, circle_x,
circle_y, cross, dash, diamond, diamond_cross, diamond_dot, dot,
hex, hex_dot, inverted_triangle, plus, square, square_cross,
square_dot, square_pin, square_x, star, star_dot, triangle,
triangle_dot, triangle_pin, x, y
Run Code Online (Sandbox Code Playgroud)
这也是 Scatter 文档中标记类型的图片: