我正在使用 Networkx 为大学项目制作分类分支图。我试图将分类名称与其父名称联系起来,从每个物种名称到每个家族名称,直到分支图的底部。为此,我将一列中的名称与另一列中的名称进行比较,并在生成的点之间形成边缘,但是我无法按照我想要的方式搜索列,并且错误太大,无法进行通过快速谷歌搜索获得解决方案,如果有人知道如何做到这一点,请告诉我。
这是我正在尝试的代码
import networkx as nx
import pandas as pd
import matplotlib.pyplot as plt
#df = pd.read_csv("E:/Escritorio/tp mat 3/pbdb_data.csv") #direccion labo
df = pd.read_csv("D:/unsam/mat 3/TP 1/pbdb_data.csv") #direccion pc
df = df.drop(["orig_no","taxon_no","record_type","flags","difference","accepted_no","parent_no","immpar_no","immpar_name","container_no","reference_no","is_extant"], axis=1)
print(df)
G = nx.Graph()
G.add_nodes_from(df["taxon_name"])
for i in df["parent_name"]:
for j in df["taxon_name"]:
if df[i] == df[j]:
x =+ 1
print (x)
nx.draw_networkx(G)
plt.draw()
csv是这样的:
taxon_rank taxon_name accepted_rank accepted_name parent_name n_occs
0 unranked clade Dinosauria unranked clade Dinosauria Dinosauriformes 1952
1 unranked clade Megalosauridae unranked clade Megalosauridae Dinosauria 2
2 unranked clade Ornithischia unranked clade Ornithischia Dinosauria 236
3 unranked clade Genasauria unranked clade Genasauria Ornithischia 208
4 unranked clade Cerapoda unranked clade Cerapoda Genasauria 173
我找不到像您在networkx上寻找的那样的树形图 不过你可以尝试:
G = nx.from_pandas_edgelist(df[["parent_name", "taxon_name"]].drop_duplicates(), 'parent_name', 'taxon_name', create_using=nx.Graph())
nx.draw_networkx(G, with_labels=True)