我已经把SO的几个答案串在一起,走到这里,但无法让节点显示不同的颜色。我的代码试图让Team节点显示为Red,而State节点显示为Black。但最终我希望在源文件中通过Type属性定义节点颜色(nfl=red,nba=black,mlb=绿色)。感谢任何帮助。
源文件csv:
team,state,Weight,type
Knicks,New York,9,nba
Warriors,California,9,nba
Giants,California,3,mlb
49ers,California,6,nfl
Cowboys,Texas,1,nfl
Giants,New York,2,nfl
字符串
代码:
import networkx as nx
import pandas as pd
from pyvis.network import Network
df = pd.read_csv('./data_files/sample.csv')
G = nx.from_pandas_edgelist(df,
source='team',
target='state',
edge_attr='Weight')
colors = []
for node in G:
if node in df["team"].values:
colors.append("red")
else:
colors.append("black")
print(colors)
nx.draw(G, node_color=colors, with_labels=True)
net = Network(notebook=True, filter_menu=True, cdn_resources='remote')
net.from_nx(G)
net.show("./output/teams.html")
型
2条答案
按热度按时间xjreopfe1#
如果你需要根据
type
有条件地为其中一个节点着色,你可以创建一个map
:字符串
注意:如果节点是 * 唯一的 *,你可以把两列Map在一起,这样:
型
如果您需要在保存html之前将颜色设置为属性,您可以使用:用途:
型
Preview(of teams.html):
的数据
vnzz0bqm2#
下面是一个使用gravis创建您请求的图形可视化的简短解决方案。源节点颜色由
type
列确定,边缘宽度来自DataFrame中的Weight
列。免责声明:我是gravis的作者,并提供了这个答案,因为像你这样的用例是构建这个包的动机的一部分,因此用它来生成合适的解决方案是很简单的。
字符串
除了
fig.display()
,你还可以使用fig.export_html(filename)
来创建一个独立的HTML文件,或者使用fig.to_html()
来获取HTML文本,你可以在Web应用程序中提供这些文本。如果你喜欢使用fig.display()
,你还可以将可视化嵌入到输出单元格中: