我是一名机械师,拥有 200 辆左右的汽车。每辆车都有我想要绘制的错误代码。最终根据错误代码对类似汽车进行可视化和比较。我是否创建名为 Car 1、Car 2 ... Car N... 等的节点,然后创建边作为其各自错误代码的列表?如果节点有共同的错误代码,则只有连接节点的边?那么,我该如何比较它们呢?比如说,1 号车的错误代码为 1、2 和 3,2 号车的错误代码为 2、3 和 4?如何在图表上比较它们?
非常感谢任何帮助!
(by @PaulBrodersen)制作维恩图:
from matplotlib_venn_wordcloud import venn2_wordcloud
data = {
"Car 1": {1, 2, 3},
"Car 2": {2, 3, 4},
} # or any equivalent input
def cmp(errs, c1, c2, freqs=None, **kwargs):
venn2_wordcloud(
sets=[
set(map(str, e))
for e in (errs[c1], errs[c2])
],
set_labels=[c1, c2],
set_colors=["cyan", "red"],
**kwargs,
)
cmp(data, "Car 1", "Car 2")
但是如果您坚持使用 networkx,您可以使用
draw_labeled_multigraph
:
from itertools import combinations
data = {
"Car 1": {1, 2, 3},
"Car 2": {2, 3, 4},
"Car 3": {5, 1},
"Car 4": {3},
} # with more cars ..
G = nx.MultiGraph(
[
(c1, c2, {"error": e})
for (c1, e1), (c2, e2) in combinations(data.items(), 2)
for e in e1 & e2
]
)
draw_labeled_multigraph(G, "error")