我想通过节点属性的值为图中的节点着色,并且对于属性的特定值,我想应用渐变。这与我所看到的(许多!)其他响应不同,这些响应旨在为图中所有节点的matplotlibcmap(例如cmap = plt.get_cmap('Greens'))中的节点添加颜色。我想将一种颜色应用于一种类型的节点,并将颜色映射应用于另一种类型的节点。
这是我迄今为止尝试过的。我认为这是失败,因为我想添加一个字符串(如“黄”)和RGBA值(例如cmap(dict_1[node]))来color_map,然后我使用的node_color参数nx.draw()。
import networkx as nx
import matplotlib.pyplot as plt
color_map = []
cmap = plt.get_cmap('Greens')
for node in g:
if node in list_1:
color_map.append('yellow')
elif node in list_2:
rgba = cmap(dict_1[node])
color_map.append(rgba*-1)
nx.draw(g, node_color = color_map, node_size = 75)
Run Code Online (Sandbox Code Playgroud)
color_map当我只按名称向 中添加颜色color_map,而不是在当前表单中时,该方法工作得很好。
我正在尝试使用 NetworkX 和 Bokeh 构建网络图。我正在使用 NetworkXfrom_pandas_edgelist函数为图表添加数据。我想根据初始数据输入中的列为图表的节点着色。
数据relation框如下:
company client
Google AT&T
Google Cisco
Amazon Facebook
Amazon Snap
Amazon Microsoft
Apple Intel
Apple IBM
Apple VisaRun Code Online (Sandbox Code Playgroud)
上面的代码片段只是 DataFrame 的一部分。
我希望所有节点从 到company以不同的颜色返回到client。
下面的代码生成一个网络图,其中所有节点的颜色相同。
G=nx.from_pandas_edgelist(relation, 'company', 'client')
# Show with Bokeh
plot = Plot(plot_width=1000, plot_height=800,
x_range=Range1d(-1.1, 1.1), y_range=Range1d(-1.1, 1.1))
plot.title.text = "Company - Client Network"
node_hover_tool = HoverTool(tooltips=[("Company Name", "@index")])
plot.add_tools(node_hover_tool, BoxZoomTool(), ResetTool())
graph_renderer = from_networkx(G, nx.spring_layout, scale=1, center=(0, 0))
graph_renderer.node_renderer.glyph = Circle(size=20)
graph_renderer.edge_renderer.glyph = …Run Code Online (Sandbox Code Playgroud)我正在使用 NetworkX 来可视化一个包含 > 1000 个节点的大图。作为可视化的一部分,我希望能够突出显示某些节点。
我已经看到了这个问题,并且知道 NetworkX 将允许您通过更改节点颜色来突出显示节点,如下所示:
import networkx as nx
import matplotlib.pyplot as plt
edges = [['A','B'], ['A','C'], ['A','D'], ['B','E'], ['B','F'], ['D','G'],['D','H'],['F','I'],['G','J'],['A','K']]
G = nx.Graph()
G.add_edges_from(edges)
colours = ['blue']*5 + ['red'] + ['blue']*5
nx.draw_networkx(G, font_size=16, node_color=colours)
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,对于大量节点,我不得不显着减小节点大小,否则它只会显示为重叠节点的模糊云,因此更改节点颜色无效。
理想情况下,我想要做的是将标签字体颜色更改为,例如,所选节点的文本标签的红色。node_color然而,NetworkX 似乎只提供一个全局参数font_color来更改所有节点标签的颜色,它不会t 接受,例如font_color=colours。
如果有任何方法可以通过 NetworkX 或 Matplotlib 更改特定节点/节点组的字体颜色,或添加任何类型的标注,或以任何其他方式突出显示某些节点而不依赖于更改node_color?