Plot einer 1D Datenmenge mit Distanzmaß
Verfasst: Sonntag 28. November 2021, 16:38
Guten Tag,
ich bin bislang leider nicht fündig geworden wie ich 1-Dimensionale Daten schön darstellen kann. Eventuell hat jemand damit Erfahrung und weiß wie ich das ganze anpassen kann.
Ausgangssituation: Ich habe zwei Datenquellen mit |R Zahlen (Knoten), die Anzahl in meinem Fall liegt im Bereich 150 - 250 je Datenbank.
Diese Zahlen wurden einander Zugeordnet (SciPy Optimize und max weight Matching NetworkX). Nach der Zuordnung liegen demnach Kanten zu den jeweiligen Knoten vor.
Ziel: Ich würde gerne eine bildliche Darstellung haben, die diese Knoten und Kanten Visualisiert und zwar inklusive des Distanzmaßes der Kante, heißt wenn die Knoten 3 und 5 verbunden sind muss die Linie den Wert 2 haben und entsprechend länger sein als eine Kante zwischen den Knoten 3,5 und 4,5.
Ich habe derzeit nur einen Plot hinbekommen bei dem die Punkte rechts und links stehen und die Linien diese Verbinden allerdings ohne jegliche gewichtung der Kante.

Ziel wäre demnach "eher" sowas wobei ich dann die zwei Teilmengen in unterschiedlichen Farben darstellen würde.. das ist auch nicht das Problem, lediglich das Längenmaß. Kann man das evtl. als Subtraktion zw. den Knotenpunkten irgendwie integrieren?

Quelle: https://networkx.guide/visualization/basics/
Liegt das an dem Bipartiten Graphen? Grundsätzlich wäre es nicht verkehrt wenn die Zahlen immernoch rechts und links wären aber eben unterschiedlich voneinander entfernt..
ich hoffe es ist nachvollziehbar was ich meine. Ich denke es hat was mit dem bipartite_layout zu tun.. aber ich bekomme ständig Fehler wenn ich das ändern will
Ich hab mal ein kleines Beispiel erstellt mit meinem derzeitigen Graph.

import pandas as pd
import numpy as np
import networkx as nx
a = [0, 1, 3, 4, 5.2]
b = [5, 6, 8, 7, 3.2]
edg = [(0,5),(1,8),(3,6), (4,3.2),(5.2,7)]
B = nx.Graph()
B.add_nodes_from(list(a), bipartite=0, label='X')
B.add_nodes_from(list(b), bipartite=1, label='Y')
B.add_edges_from(edg, label='matching')
left_or_top = list(a)
pos = nx.bipartite_layout(B, left_or_top)
plt.subplots(figsize=(10, 5))
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1, edge_cmap=plt.cm.Blues,with_labels=True)
ich bin bislang leider nicht fündig geworden wie ich 1-Dimensionale Daten schön darstellen kann. Eventuell hat jemand damit Erfahrung und weiß wie ich das ganze anpassen kann.
Ausgangssituation: Ich habe zwei Datenquellen mit |R Zahlen (Knoten), die Anzahl in meinem Fall liegt im Bereich 150 - 250 je Datenbank.
Diese Zahlen wurden einander Zugeordnet (SciPy Optimize und max weight Matching NetworkX). Nach der Zuordnung liegen demnach Kanten zu den jeweiligen Knoten vor.
Ziel: Ich würde gerne eine bildliche Darstellung haben, die diese Knoten und Kanten Visualisiert und zwar inklusive des Distanzmaßes der Kante, heißt wenn die Knoten 3 und 5 verbunden sind muss die Linie den Wert 2 haben und entsprechend länger sein als eine Kante zwischen den Knoten 3,5 und 4,5.
Ich habe derzeit nur einen Plot hinbekommen bei dem die Punkte rechts und links stehen und die Linien diese Verbinden allerdings ohne jegliche gewichtung der Kante.

Ziel wäre demnach "eher" sowas wobei ich dann die zwei Teilmengen in unterschiedlichen Farben darstellen würde.. das ist auch nicht das Problem, lediglich das Längenmaß. Kann man das evtl. als Subtraktion zw. den Knotenpunkten irgendwie integrieren?

Quelle: https://networkx.guide/visualization/basics/
Liegt das an dem Bipartiten Graphen? Grundsätzlich wäre es nicht verkehrt wenn die Zahlen immernoch rechts und links wären aber eben unterschiedlich voneinander entfernt..


Ich hab mal ein kleines Beispiel erstellt mit meinem derzeitigen Graph.

import pandas as pd
import numpy as np
import networkx as nx
a = [0, 1, 3, 4, 5.2]
b = [5, 6, 8, 7, 3.2]
edg = [(0,5),(1,8),(3,6), (4,3.2),(5.2,7)]
B = nx.Graph()
B.add_nodes_from(list(a), bipartite=0, label='X')
B.add_nodes_from(list(b), bipartite=1, label='Y')
B.add_edges_from(edg, label='matching')
left_or_top = list(a)
pos = nx.bipartite_layout(B, left_or_top)
plt.subplots(figsize=(10, 5))
nx.draw(B,pos,node_color='#A0CBE2',edge_color='#00bb5e',width=1, edge_cmap=plt.cm.Blues,with_labels=True)