我是使用Python处理图形的新手:NetworkX.到现在为止我使用过Gephi.标准步骤(但不是唯一可行的)是:
从表/电子表格加载节点信息; 其中一列应该是ID,其余的是关于节点的元数据(节点是人,因此性别,组...通常用于着色).喜欢:
id;NormalizedName;Gender
per1;Jesús;male
per2;Abraham;male
per3;Isaac;male
per4;Jacob;male
per5;Judá;male
per6;Tamar;female
...
Run Code Online (Sandbox Code Playgroud)然后从表/电子表格加载边缘,使用与节点电子表格的列ID中的节点相同的名称,通常有四列(目标,来源,重量和类型):
Target;Source;Weight;Type
per1;per2;3;Undirected
per3;per4;2;Undirected
...
Run Code Online (Sandbox Code Playgroud)这是我拥有的两个数据帧,我想用Python加载它们.阅读关于NetworkX,似乎不太可能将两个表(一个用于节点,一个用于边缘)加载到同一个图表中,我不确定最好的方法是什么:
我应该仅使用DataFrame中的节点信息创建图形,然后添加(追加)来自其他DataFrame的边缘吗?如果是这样,并且因为nx.from_pandas_dataframe()需要有关边的信息,我想我不应该用它来创建节点......我应该只是将信息作为列表传递?
我是否应该仅使用DataFrame中的边信息创建图形,然后将来自其他DataFrame的信息作为属性添加到每个节点?有没有比迭代DataFrame和节点更好的方法呢?
我正在使用Pandas和Matplotlib在条形图中定义颜色一段时间.让我们假设我们有以下数据帧:
import pandas as pd
pers1 = ["Jesús","lord",2]
pers2 = ["Mateo","apostel",1]
pers3 = ["Lucas","apostel",1]
dfnames = pd.DataFrame([pers1,pers2, pers3], columns=["name","type","importance"])
Run Code Online (Sandbox Code Playgroud)
现在,我想创建一个条形图,其重要性为数值,人物名称为刻度,并使用类型列指定颜色.我已经阅读了其他问题(例如:为定义的列定义Pandas/Matplotlib的条形图颜色)但它不起作用......
所以,首先我必须定义颜色并将它们分配给不同的值:
colors = {'apostel':'blue','lord':'green'}
Run Code Online (Sandbox Code Playgroud)
最后使用.plot()函数:
dfnames.plot(x="name", y="importance", kind="bar", color = dfnames['type'].map(colors))
Run Code Online (Sandbox Code Playgroud)
好.唯一的问题是所有的栏都是绿色的:
为什么??我不知道......我在Spyder和Jupyter进行测试......有什么帮助吗?谢谢!