NetworkX有向图-根据节点的权重值显示其颜色

时间:2019-05-21 12:11:51

标签: python-3.x matplotlib networkx directed-graph

我在为下面的图表上的节点分配颜色时遇到问题。需要根据节点权重使用发散格式(RdYlGn)相应地调整节点颜色。

我的代码如下:

import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

data = pd.read_csv("D:\\Cars0319SP.csv")
df = pd.DataFrame({'from':data['Car Code - Serviced'], 'to':data['Car Code - Due Serv'],'value': data['Car Make - Serviced']}) #Value is categorical

df['value'] = pd.Categorical(df['value'])
print(df['value'].cat.codes)
colormake = df['value'].cat.codes
colorlist = ['cyan', 'magenta', 'yellow', 'black']

G=nx.from_pandas_edgelist(df, source='from', target='to', edge_attr=True, create_using=nx.DiGraph())
G.to_directed(as_view=True)
nx.draw(G, with_labels=False, node_color=colormake, node_size=((df['value'].cat.codes)*12), node_fontsize='4', edge_color= 'mediumpurple', arrowstyle='->', arrowsize=5, width=2.0, edge_cmap=plt.cm.jet, arrows=True)
plt.show() 

我得到例如的结果。 node_color = 'wheat'是(请参阅图片1链接-无法发布图片):

Image 1

编辑:包括的数据集有助于重现错误

Car Code - Due Serv  Car Code - Serviced    Car Make - Serviced   Veh.In
      N155          
      U193          
      P169                  N155                    32N155           2
      F194                  P169                    32P169           1 
      N155          
      B712                  F194                    32F194           2

将“ colormake”字符串插入节点颜色时,出现以下错误。

ValueError: 'c' argument has 259 elements, which is not acceptable for use with 'x' with size 195, 'y' with size 195.

在定义代码中的各种颜色时,我肯定做错了,将非常感谢您的帮助。

0 个答案:

没有答案